Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   ActionScript SSL (http://www.flasher.ru/forum/showthread.php?t=132459)

Himerets 12.11.2009 11:37

ActionScript SSL
 
Нужна реализация SSL соединения на ActionScript'e. Че делать? Может кто-то с этим сталкивался?

u238 12.11.2009 15:31

Размести ролик на сервере с SSL , браузер откроет SSL и ролик получит права. (теоретически)

Himerets 12.11.2009 15:36

Получит, но тогда данные, передаваемые через него серверу можно будет перехватить на уровне браузера и подделать. А этого как раз таки и нужно избежать

kackbip 12.11.2009 15:42

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. Мыло? Домой приду скину. если это поможет

etc 12.11.2009 19:34

Ничего не мешает подделать данные перед отправкой и шифровкой.

Логику должен считать сервер, если вы не хотите, чтобы вас сломали.

Himerets 12.11.2009 19:50

Цитата:

Сообщение от Fernando Costa (Сообщение 865243)
там при подключении к сокету третий параметр идет TLSConfig. Мыло? Домой приду скину. если это поможет

himerets@yandex.ru

я ж в личку те писал его.

в объекте типа TLSConfig нет свойства prompUserToAcceptCert

Добавлено через 3 минуты
Цитата:

Сообщение от etc (Сообщение 865251)
Ничего не мешает подделать данные перед отправкой и шифровкой.

Если отправлять и шифровать данные на уровне сокетов в свф, подделать данные будет весьма и весьма затруднительно.

Цитата:

Сообщение от etc (Сообщение 865251)
Логику должен считать сервер, если вы не хотите, чтобы вас сломали.

Я не совсем понял. Какую логику должен считать сервер?

etc 12.11.2009 19:55

Цитата:

Сообщение от Himerets (Сообщение 865257)
Если отправлять и шифровать данные на уровне сокетов в свф, подделать данные будет весьма и весьма затруднительно.

Это вопрос времени всего лишь. Другие методы, но и только.

Цитата:

Сообщение от Himerets (Сообщение 865257)
Я не совсем понял. Какую логику должен считать сервер?

Бизнес-логику. Её не должно быть на клиенте.

Himerets 12.11.2009 20:04

То есть, например, подсчет очков? Я правильно понимаю?
Если так, то в моем случае это невозможно

etc 12.11.2009 22:08

Да, подсчет очков. Если невозможно, то печально.

Fernando Costa 13.11.2009 01:14

вот основное
Код AS3:

        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.

Код AS3:

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 минут
Цитата:

Сообщение от etc (Сообщение 865291)
Да, подсчет очков. Если невозможно, то печально.

Да, пожалуй. Но печалиться не надо, надо что-то делать.
Хотя бы усложнить процесс взлома настолько, насколько это возможно.

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

покер. ява сервер. Нужно было получить секретный ключ с сервера.


Часовой пояс GMT +4, время: 07:20.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.