Просмотр полной версии : ActionScript SSL
Himerets
12.11.2009, 11:37
Нужна реализация SSL соединения на ActionScript'e. Че делать? Может кто-то с этим сталкивался?
Размести ролик на сервере с SSL , браузер откроет SSL и ролик получит права. (теоретически)
Himerets
12.11.2009, 15:36
Получит, но тогда данные, передаваемые через него серверу можно будет перехватить на уровне браузера и подделать. А этого как раз таки и нужно избежать
SSL соединение открывает браузер. Никакой дополнительный ActionScript для работы с SSL не надо. Нужен просто сертификат на сервере.
Добавлено через 2 минуты
А почему именно SSL?
Есть разные способы шифрования. Только большинство из них довольно медленно работают... тем более реализованные на actionscript
Himerets
12.11.2009, 15:59
Задача такая.
Есть флэш-игра на веб-страничке.
после того, как пользователь в нее поиграл, нужно отправить информацию о его результатах на сервер. И нужно как-то предотвратить перехват этих данных. Точнее даже не перехват, а подделку.
Я установил SSL на сервер, сделал хост, создал страничку и засунул в нее тестовую свф-ку, которая отправляет запрос при нажатии на кнопку.
Ну и при помощи плагина TamperData этот запрос очень хорошо виден и при желании его можно отклонить/изменить... короче сделать че-то нехорошее.
Добавлено через 6 минут
Вот если бы было возможно, скажем, сделать сокетное соединение прям из свф-ки на сервер (с поддержкой ссл), тогда данные перехватить и тем более изменить нельзя было бы, но реализации ссл-сокетов для флеша, я нигде не нашел. Точнее нашел библиотеку AS3Crypto, в ней есть набор компонентов для работы с TLS, но че-то он уж больно стремный. Я с ним целый день провозился и ничего кроме различных сообщений об ошибках из него не выжал.
Fernando Costa
12.11.2009, 16:37
я поднял у себя TLS соединение в as3crypto. на это ушло ооочень много времени. но вроде работает
Himerets
12.11.2009, 16:59
Буду ооочень благодарен за материалы, разработанные тобой и скинутые мне на ящик )))))))
Fernando Costa
12.11.2009, 17:49
Надо подписываться на ProgressEvent.SOCKET_DATA. Я подписывался на все ascrypto ивенты но на них ничего не приходило. В конфиге указать по максимуму разрешений, как-то prompUserToAcceptCert и т.д.
Серверщик что-то у себя химичил с сертификатом много раз, что он там у себя менял сказать не могу, не знаю.
На клиенте надо просто полазить по либе и наставить трейсов, посмотреть куда что попадает.
Himerets
12.11.2009, 17:58
В конфиге указать по максимуму разрешений, как-то prompUserToAcceptCert и т.д.
В каком конфиге?
Добавлено через 52 секунды
Так как насчет скинуть на ящик?
Fernando Costa
12.11.2009, 19:21
там при подключении к сокету третий параметр идет TLSConfig. Мыло? Домой приду скину. если это поможет
Ничего не мешает подделать данные перед отправкой и шифровкой.
Логику должен считать сервер, если вы не хотите, чтобы вас сломали.
Himerets
12.11.2009, 19:50
там при подключении к сокету третий параметр идет TLSConfig. Мыло? Домой приду скину. если это поможет
himerets@yandex.ru
я ж в личку те писал его.
в объекте типа TLSConfig нет свойства prompUserToAcceptCert
Добавлено через 3 минуты
Ничего не мешает подделать данные перед отправкой и шифровкой.
Если отправлять и шифровать данные на уровне сокетов в свф, подделать данные будет весьма и весьма затруднительно.
Логику должен считать сервер, если вы не хотите, чтобы вас сломали.
Я не совсем понял. Какую логику должен считать сервер?
Если отправлять и шифровать данные на уровне сокетов в свф, подделать данные будет весьма и весьма затруднительно.
Это вопрос времени всего лишь. Другие методы, но и только.
Я не совсем понял. Какую логику должен считать сервер?
Бизнес-логику. Её не должно быть на клиенте.
Himerets
12.11.2009, 20:04
То есть, например, подсчет очков? Я правильно понимаю?
Если так, то в моем случае это невозможно
Да, подсчет очков. Если невозможно, то печально.
Fernando Costa
13.11.2009, 01:14
вот основное var conf:TLSConfig = new TLSConfig(1)
conf.promptUserForAcceptCert = true;
conf.trustSelfSignedCertificates = true;
conf.ignoreCommonNameMismatch = true;
socket = new TLSSocket(!host!, !port!, conf);
socket.addEventListener(ProgressEvent.SOCKET_DATA, onTLSReady);
socket.writeUTF("request to server \n");
socket.flush();
private function onTLSReady(e:ProgressEvent):void
{
trace("get data " + socket.readUTFBytes(socket.bytesAvailable));
}
Himerets
13.11.2009, 15:19
Странно, у меня нет таких параметров в conf.
package com.hurlant.crypto.tls {
import flash.utils.ByteArray;
import com.hurlant.util.der.PEM;
import com.hurlant.crypto.rsa.RSAKey;
import com.hurlant.crypto.cert.X509CertificateCollection;
import com.hurlant.crypto.cert.MozillaRootCertificates;
public class TLSConfig {
public var entity:uint; // SERVER | CLIENT
public var certificate:ByteArray;
public var privateKey:RSAKey;
public var cipherSuites:Array;
public var compressions:Array;
public var CAStore:X509CertificateCollection;
public function TLSConfig( entity:uint, cipherSuites:Array = null, compressions:Array = null,
certificate:ByteArray = null, privateKey:RSAKey = null, CAStore:X509CertificateCollection = null) {
this.entity = entity;
this.cipherSuites = cipherSuites;
this.compressions = compressions;
this.certificate = certificate;
this.privateKey = privateKey;
this.CAStore = CAStore;
// default settings.
if (cipherSuites==null) {
this.cipherSuites = CipherSuites.getDefaultSuites();
}
if (compressions==null) {
this.compressions = [TLSSecurityParameters.COMPRESSION_NULL];
}
if (CAStore==null) {
this.CAStore = new X509CertificateCollection;
}
}
public function setPEMCertificate(cert:String, key:String = null):void {
if (key == null) {
key = cert; // for folks who like to concat those two in one file.
}
certificate = PEM.readCertIntoArray(cert);
privateKey = PEM.readRSAPrivateKey(key);
}
}
}
Так что там насчет ящика? Может заодно скинешь свою версию AS3Crypto?
Добавлено через 7 минут
Да, подсчет очков. Если невозможно, то печально.
Да, пожалуй. Но печалиться не надо, надо что-то делать.
Хотя бы усложнить процесс взлома настолько, насколько это возможно.
Fernando Costa
13.11.2009, 15:36
Так что там насчет ящика?
у меня последняя ревизия crypto с свна. Смысл тут кидать ее? Какие хоть симптомы неработы?
Himerets
13.11.2009, 15:39
Cannot verify certificate
Добавлено через 3 часа 35 минут
И еще постоянно кричит
"I DONT KNOW HOW TO HANDLE DER stuff of TYPE 22"
Добавлено через 4 часа 54 минуты
Стрелять-колотить! У меня кажись все получилось!:yahoo:
Fernando Costa, а для чего ты использовал TLS? Между чем и чем было соединение?
Fernando Costa
14.11.2009, 21:38
покер. ява сервер. Нужно было получить секретный ключ с сервера.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.