Доступен любой простой, но безопасный сценарий для интеграции Flash> БД MySQL? Мне нужно что-то для БД входа в систему.
Обмен переменными с помощью PHP приятен и прост, но явно небезопасен.
через удаленное взаимодействие? У меня есть Установлены компоненты удаленного взаимодействия Flash 8 и несколько идей: идея-1, идея-2.
через NetConnection? Есть лиды: свинец-1, свинец-2.
Холодный синтез? У кого-нибудь есть идеи?
Менее вероятные решения:
через XML? Кто-нибудь знает, как использовать XML для подключения к БД? (AS2 или AS3)
AMF-PHP невозможно по соображениям безопасности (скрипт установлен в корне сервера)
Редактировать: Шифрование должно сделать решение PHP более жизнеспособным, хотя и предлагает только базовую защиту для базы данных входа с высоким уровнем безопасности. Смотрите также: SO: 1, 2, 3, Adobe: 4.
Поскольку Flash должен передать данные имени пользователя и пароля в сценарий PHP для аутентификации ... позже PHP отправит обратно личные данные во Flash с помощью GET / POST
Вы явно запутались в некоторых основных понятиях. Как вы думаете, почему все, что флэш-память отправляет или получает от PHP-скрипта, менее безопасно, чем все, что флэш-память отправляет на сервер MysSQL?






Раньше я делал Flex-> DB, используя веб-службы ASP.NET через SSL для входа в систему и т. д. Flash должен иметь возможность взаимодействовать с любой веб-страницей через https, будь то ASP.NET, PHP или любое другое приложение. сервер.
Не могли бы вы уточнить требования к «базе данных входа с высоким уровнем безопасности»? Что было бы для вас идеальным решением?
ColdFusion 8 также работает в Linux, Macintosh и Solaris, хотя сам я никогда не использовал CF.
Afaik невозможно напрямую разговаривать с сервером MySQL через ActionScript (если только кто-то не написал пакет, который фактически избавляет от работы с сетью, но я его еще не видел).
Могу я также отметить, что ваше замечание о «небезопасности из-за PHP» не совсем верно? Еще хуже, когда вы на самом деле все делаете из апплета: в наши дни это мелочь, чтобы декомпилировать .SWF, и тогда у них даже будут данные для входа в вашу базу данных.
Я думаю, как и предположил Ристондж, лучше всего использовать класс URLRequest.
Обычно я передаю текущий идентификатор сеанса php апплету, чтобы я мог включить его и IP-адрес пользователя в первоначальный запрос апплета. На сервере я проверяю, действительно ли ip / session активны в таблице сеансов и совпадают. Если это так, пользователь получает своего рода токен команды, который позволяет ему выполнять запросы, которые, в свою очередь, могут обновлять вашу базу данных.
Если вы делаете все это через SSL-соединение, вы в значительной степени в безопасности. И да, вы должны хранить PHP-скрипты на сервере, но получить для них исходный код сложнее, чем просто декомпилировать апплет и извлечь все :)
Мне нравится хранить всю потенциально опасную логику программы только на сервере, а НЕ в апплете.
Я имел в виду небезопасный в том смысле, что Flash передает данные имени пользователя и пароля через POST ... через URL! или я упустил суть? Или есть лучший способ сделать Flash> PHP?
На самом деле POST не проходит через URL-адрес, вы думаете о GET. POST передается как часть HTTP-запроса.
По сути, Flash должен передать данные имени пользователя и пароля в сценарий PHP для аутентификации ... позже PHP отправит обратно личные данные во Flash с помощью GET / POST.
Мне нужна некоторая защита, чтобы злоумышленники не могли получить доступ к этим личным данным.
Редактировать: PHP> MySQL DB кажется достаточно безопасным. Это просто часть Flash> PHP, которая нуждается в некоторых:
Вы явно запутались в некоторых основных понятиях. Как вы думаете, почему все, что флэш-память отправляет или получает от PHP-скрипта, менее безопасно, чем все, что флэш-память отправляет на сервер MysSQL?
Потому что соединение в незашифрованном виде. Для чтения данных HTTP-запроса и т. д. Можно использовать любой инструмент сниффинга.
в этом нет никакого смысла. соединение не обязательно должно быть незашифрованным. почему бы тебе не зашифровать? независимо от того, какое соединение между вашим флэш-приложением и базой данных, почему оно должно быть зашифровано волшебным образом?
Вы явно запутались в некоторых основных понятиях. Flash не может «отправлять» данные на сервер MySQL (я буду рад, если вы докажете, что я ошибаюсь!), Все, что мы можем сделать, это запросить серверные скрипты, которые сделают за нас грязную работу.
Независимо от того, используете ли вы Flash или PHP, вы по-прежнему используете технологию / спецификацию HTML-форм для выполнения GET / POST, поэтому использование Flash так же безопасно (или небезопасно), как использование PHP, Perl, CGI и т. д.
Если вам нужен некоторый уровень безопасности при входе в систему, вам следует подумать о получении лицензии SSL для сайта.
Вы имеете в виду, что мы можем использовать Flash> PHP> DB через SSL-соединение?
Прежде всего, если вы беспокоитесь о безопасности соединения, не отправляйте пароль поверх него: всегда используйте вместо него хеш-код. Лично я никогда не храню пароль в текстовом виде дольше необходимого.
А в остальном, в основном то, что я сказал в своем предыдущем ответе: в первом вызове «аутентификации» я также передал бы идентификатор сеанса для обычного использования PHP. На сервере вы проверяете этот идентификатор в своей таблице сеансов и проверяете, поступает ли POST, содержащий данные, с IP-адреса, связанного с этим сеансом. Затем вы проверяете имя пользователя и хеш, которые были указаны, и если все они верны, вы можете быть уверены, что пользователь является тем, кем они себя называют.
Ключ к этому - использование функций session _.... в PHP. Я обязательно сохраняю как идентификатор сеанса, так и соответствующий IP-адрес (который вы можете получить из $ _SERVER ['REMOTE_ADDR']) в моей таблице сеансов. Таким образом, вы можете проверить, совпадают ли идентификатор сеанса и IP-адрес, когда апплет вызывает ваш сервер, что добавляет немного дополнительной безопасности.
В любом случае, в наши дни нет ничего безопасного, и я тоже не профессионал в области безопасности, поэтому есть гораздо лучшие решения. Вопрос в том, сколько усилий вы готовы вложить в это?
Я не уверен, что отправка хеша пароля (т.е. предоставление доступа на основе хеша пароля) делает его более безопасным. Это просто делает хеш таким же ценным, как и сам пароль, а это не то, что вам нужно, особенно если вы используете тот же механизм хеширования для защиты паролей, хранящихся в базе данных.
@tomhaigh: Я согласен, простое вычисление хеша делает хеш паролем и не обеспечивает дополнительной безопасности. Если сервер отправляет запрос, а клиент выполняет некоторое хеширование, это может быть немного безопаснее.
Существует проект в коде 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/
Почему для этого небезопасен PHP? Безусловно, наличие как можно большего количества логики на промежуточном уровне на стороне сервера, таком как PHP, на самом деле является очень безопасным, поскольку клиентская flash / AS может быть легко перепроектирована и изменена злоумышленниками. Или я упустил суть?