Просмотр полной версии : Флеш ролик на странице и куки (сессия)
Вопрос коротко:
Если флеш-ролик, размещенный на странице, отправляет запросы к серверу, то запросы идут от имени браузера и все куки, установленные в браузере, передаются автоматически?
Конкретней:
Имеется сайт, на котором пользователь прошел авторизацию, о чем сделана соответствующая запись в сессии.
На странице размещен флеш-ролик, который отправляет данные на сервер.
Сервер должен проверить права пользователя на выполнения действия (то, что пользователь авторизован на сайте).
Сидел, думал, как бы из ролика передать серверу id сессии, а тут оказалось, что он сам вроде передается. Я не ошибся?
Вопрос номер два:
Есть ли в такой проверке авторизованности угроза безопасности? Может следует учесть какие-то неочевидные моменты? Просто делаю это первый раз.
Запросы идут от имени клиента, с его IP и прочего.. но флешка передает адрес с какой страницы была загружена, и IP пользователя, что можно проверять на сервере...
НО по Вашему плану человек может скачать флешку и запускать её без браузера, и всегда получать желаемое без авторизации.
И вообще куки можно подделать и занимает это пару минут.. Иное дело серверые сессии - но если их передавать во флеше они опять же будут видны злоумышленнику.
Вариант такой - сервер, который авторизует клиента (сайт) и выдает сессию, пишет значение сессии в базу (к примеру юзер Вася имеет сессию 24a6f69c9934c2d6a312650f16b108c5), и эту же сессию передает во флешварс вида
'flashvars', "user_id=24a6f69c9934c2d6a312650f16b108c5"
Далее флешка передает это значение при подключении NetConnection.connect (serverURL, user_id)
Далее сервер делает запрос к базе вида (проверить, есть ли в базе запись 24a6f69c9934c2d6a312650f16b108c5, если да, то разрешить подключение).
Таким образом кто бы ни пытался подделать сессию, в серверную базу он не залезет, соотв не подключится, так что так
1. Что значит "от клиента"? Клиентом выступает браузер или сама флешка? Если флешка размещена на странице. IP здесь вообще ни при чем.
2. Флешка без браузера по такому плану точно ничего сделать не сможет, т.к. сервер проверяет наличие корректной сессии, значит флешка для этого должна знать id сессии и как-то его передать.
Вопрос состоит в том, правильно ли я понял, что размещенная на странице флешка передает запрос от имени браузера с куками, установленными в нем?
Допустим, неправильно. Тогда как объяснить происходящее?
session_start();
$fp=fopen('access.log','a');
fwrite($fp,$_SERVER['HTTP_USER_AGENT']."\n");
fwrite($fp,$_COOKIE[session_name()]."\n");
fclose($fp);
<object ...>здесь вставляем ролик</object>
this.createEmptyMovieClip('loader',this.getNextHighestDepth());
loadVariables('/test.php',loader,'POST');
Содержимое access.log:
Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.16) Gecko/2009120208 Firefox/3.0.16
a3689b1a449462328117c598639c98e6
Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.16) Gecko/2009120208 Firefox/3.0.16
a3689b1a449462328117c598639c98e6
Запрашиваем страницу, видим в access.log два обращения к файлу - один раз при загрузке страницы, второй - из флеш. Сессия во флеш та же. Или я чего-то не понимаю?
Вы абсолютно правы.. Проверил в четырех браузерах, проверил настройки апача. Принимающая сторона видит и куки и сессии, и все что надо и не надо. В общем то это даже логично, что плагин работает от имени браузера. Спасибо, что подняли эту тему.
Подождем, что скажут профи.
Желательно со ссылкой на какой-нибудь документ, говорящий, что так и задумано...
maxlapshin
29.12.2009, 22:27
Флеш не шлет куки когда заливает файлы, а вот GET запросы идут с куками.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.