Простой безопасный способ преобразования Flash в базу данных MySQL

Доступен любой простой, но безопасный сценарий для интеграции Flash> БД MySQL? Мне нужно что-то для БД входа в систему.

Обмен переменными с помощью PHP приятен и прост, но явно небезопасен.

через удаленное взаимодействие? У меня есть Установлены компоненты удаленного взаимодействия Flash 8 и несколько идей: идея-1, идея-2.

через NetConnection? Есть лиды: свинец-1, свинец-2.

Холодный синтез? У кого-нибудь есть идеи?


Менее вероятные решения:

  • через XML? Кто-нибудь знает, как использовать XML для подключения к БД? (AS2 или AS3)

  • AMF-PHP невозможно по соображениям безопасности (скрипт установлен в корне сервера)

  • Java-сервер ras должен быть специально установлен на сервере.

Редактировать: Шифрование должно сделать решение PHP более жизнеспособным, хотя и предлагает только базовую защиту для базы данных входа с высоким уровнем безопасности. Смотрите также: SO: 1, 2, 3, Adobe: 4.

Почему для этого небезопасен PHP? Безусловно, наличие как можно большего количества логики на промежуточном уровне на стороне сервера, таком как PHP, на самом деле является очень безопасным, поскольку клиентская flash / AS может быть легко перепроектирована и изменена злоумышленниками. Или я упустил суть?

Tom Haigh 30.12.2008 15:02

Поскольку Flash должен передать данные имени пользователя и пароля в сценарий PHP для аутентификации ... позже PHP отправит обратно личные данные во Flash с помощью GET / POST

Robin Rodricks 30.12.2008 16:34

Вы явно запутались в некоторых основных понятиях. Как вы думаете, почему все, что флэш-память отправляет или получает от PHP-скрипта, менее безопасно, чем все, что флэш-память отправляет на сервер MysSQL?

user3850 30.12.2008 18:34
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
3
6 979
8
Перейти к ответу Данный вопрос помечен как решенный

Ответы 8

Раньше я делал Flex-> DB, используя веб-службы ASP.NET через SSL для входа в систему и т. д. Flash должен иметь возможность взаимодействовать с любой веб-страницей через https, будь то ASP.NET, PHP или любое другое приложение. сервер.

Не могли бы вы уточнить требования к «базе данных входа с высоким уровнем безопасности»? Что было бы для вас идеальным решением?

ColdFusion 8 также работает в Linux, Macintosh и Solaris, хотя сам я никогда не использовал CF.

http://www.adobe.com/products/coldfusion/systemreqs/

Ответ принят как подходящий

Afaik невозможно напрямую разговаривать с сервером MySQL через ActionScript (если только кто-то не написал пакет, который фактически избавляет от работы с сетью, но я его еще не видел).

Могу я также отметить, что ваше замечание о «небезопасности из-за PHP» не совсем верно? Еще хуже, когда вы на самом деле все делаете из апплета: в наши дни это мелочь, чтобы декомпилировать .SWF, и тогда у них даже будут данные для входа в вашу базу данных.

Я думаю, как и предположил Ристондж, лучше всего использовать класс URLRequest.

Обычно я передаю текущий идентификатор сеанса php апплету, чтобы я мог включить его и IP-адрес пользователя в первоначальный запрос апплета. На сервере я проверяю, действительно ли ip / session активны в таблице сеансов и совпадают. Если это так, пользователь получает своего рода токен команды, который позволяет ему выполнять запросы, которые, в свою очередь, могут обновлять вашу базу данных.

Если вы делаете все это через SSL-соединение, вы в значительной степени в безопасности. И да, вы должны хранить PHP-скрипты на сервере, но получить для них исходный код сложнее, чем просто декомпилировать апплет и извлечь все :)

Мне нравится хранить всю потенциально опасную логику программы только на сервере, а НЕ в апплете.

Я имел в виду небезопасный в том смысле, что Flash передает данные имени пользователя и пароля через POST ... через URL! или я упустил суть? Или есть лучший способ сделать Flash> PHP?

Robin Rodricks 30.12.2008 16:59

На самом деле POST не проходит через URL-адрес, вы думаете о GET. POST передается как часть HTTP-запроса.

ristonj 30.12.2008 17:28

По сути, Flash должен передать данные имени пользователя и пароля в сценарий PHP для аутентификации ... позже PHP отправит обратно личные данные во Flash с помощью GET / POST.

Мне нужна некоторая защита, чтобы злоумышленники не могли получить доступ к этим личным данным.

Редактировать: PHP> MySQL DB кажется достаточно безопасным. Это просто часть Flash> PHP, которая нуждается в некоторых:

  • шифрование (хеширование?)
  • безопасное соединение (HTTPS или HTTP через SSL?)
  • или лучший, более прямой подход к базе данных MySQL (удаленное взаимодействие?).

Вы явно запутались в некоторых основных понятиях. Как вы думаете, почему все, что флэш-память отправляет или получает от PHP-скрипта, менее безопасно, чем все, что флэш-память отправляет на сервер MysSQL?

user3850 30.12.2008 18:22

Потому что соединение в незашифрованном виде. Для чтения данных HTTP-запроса и т. д. Можно использовать любой инструмент сниффинга.

Robin Rodricks 30.12.2008 19:23

в этом нет никакого смысла. соединение не обязательно должно быть незашифрованным. почему бы тебе не зашифровать? независимо от того, какое соединение между вашим флэш-приложением и базой данных, почему оно должно быть зашифровано волшебным образом?

user3850 30.12.2008 21:51

Вы явно запутались в некоторых основных понятиях. Flash не может «отправлять» данные на сервер MySQL (я буду рад, если вы докажете, что я ошибаюсь!), Все, что мы можем сделать, это запросить серверные скрипты, которые сделают за нас грязную работу.

Robin Rodricks 30.12.2008 23:50

Независимо от того, используете ли вы Flash или PHP, вы по-прежнему используете технологию / спецификацию HTML-форм для выполнения GET / POST, поэтому использование Flash так же безопасно (или небезопасно), как использование PHP, Perl, CGI и т. д.

Если вам нужен некоторый уровень безопасности при входе в систему, вам следует подумать о получении лицензии SSL для сайта.

Вы имеете в виду, что мы можем использовать Flash> PHP> DB через SSL-соединение?

Robin Rodricks 30.12.2008 17:13

Прежде всего, если вы беспокоитесь о безопасности соединения, не отправляйте пароль поверх него: всегда используйте вместо него хеш-код. Лично я никогда не храню пароль в текстовом виде дольше необходимого.

А в остальном, в основном то, что я сказал в своем предыдущем ответе: в первом вызове «аутентификации» я также передал бы идентификатор сеанса для обычного использования PHP. На сервере вы проверяете этот идентификатор в своей таблице сеансов и проверяете, поступает ли POST, содержащий данные, с IP-адреса, связанного с этим сеансом. Затем вы проверяете имя пользователя и хеш, которые были указаны, и если все они верны, вы можете быть уверены, что пользователь является тем, кем они себя называют.

Ключ к этому - использование функций session _.... в PHP. Я обязательно сохраняю как идентификатор сеанса, так и соответствующий IP-адрес (который вы можете получить из $ _SERVER ['REMOTE_ADDR']) в моей таблице сеансов. Таким образом, вы можете проверить, совпадают ли идентификатор сеанса и IP-адрес, когда апплет вызывает ваш сервер, что добавляет немного дополнительной безопасности.

В любом случае, в наши дни нет ничего безопасного, и я тоже не профессионал в области безопасности, поэтому есть гораздо лучшие решения. Вопрос в том, сколько усилий вы готовы вложить в это?

Я не уверен, что отправка хеша пароля (т.е. предоставление доступа на основе хеша пароля) делает его более безопасным. Это просто делает хеш таким же ценным, как и сам пароль, а это не то, что вам нужно, особенно если вы используете тот же механизм хеширования для защиты паролей, хранящихся в базе данных.

Tom Haigh 30.12.2008 19:51

@tomhaigh: Я согласен, простое вычисление хеша делает хеш паролем и не обеспечивает дополнительной безопасности. Если сервер отправляет запрос, а клиент выполняет некоторое хеширование, это может быть немного безопаснее.

Simon Groenewolt 07.01.2009 02:21

Существует проект в коде Google, в котором вы можете напрямую подключиться из своего SWF-фильма к базе данных MySQL через соединение TCP-сокета http://code.google.com/p/assql/. Никогда не пробовал, но звучит интересно и очень небезопасно.

Обратите внимание на AS3crypto - http://code.google.com/p/as3crypto/ - это отличная библиотека для шифрования.

1) Создайте 1024-битные (или выше, в зависимости от необходимой безопасности) открытые / закрытые ключи RSA.

2) Сохраните открытый ключ в вашем SWF-файле (это безопасно, даже если кто-то декомпилирует ваш SWF-файл).

3) Храните свой закрытый ключ в безопасном месте на сервере.

3) Используя открытый ключ и библиотеку AS3crypto, зашифруйте любые данные, отправляемые из swf, перед их отправкой на сервер.

4) Как только данные поступят на сервер, расшифруйте их с помощью закрытого ключа, доступ к которому есть только у вас.

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

Получите доступ к MySQL прямо из AS3 - проверьте: http://code.google.com/p/assql/

Другие вопросы по теме