Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Серверные технологии и Flash (http://www.flasher.ru/forum/forumdisplay.php?f=62)
-   -   Флеш ролик на странице и куки (сессия) (http://www.flasher.ru/forum/showthread.php?t=134397)

Kvecxjo 29.12.2009 11:17

Флеш ролик на странице и куки (сессия)
 
Вопрос коротко:
Если флеш-ролик, размещенный на странице, отправляет запросы к серверу, то запросы идут от имени браузера и все куки, установленные в браузере, передаются автоматически?

Конкретней:
Имеется сайт, на котором пользователь прошел авторизацию, о чем сделана соответствующая запись в сессии.
На странице размещен флеш-ролик, который отправляет данные на сервер.
Сервер должен проверить права пользователя на выполнения действия (то, что пользователь авторизован на сайте).
Сидел, думал, как бы из ролика передать серверу id сессии, а тут оказалось, что он сам вроде передается. Я не ошибся?

Вопрос номер два:
Есть ли в такой проверке авторизованности угроза безопасности? Может следует учесть какие-то неочевидные моменты? Просто делаю это первый раз.

leofit 29.12.2009 11:43

Запросы идут от имени клиента, с его IP и прочего.. но флешка передает адрес с какой страницы была загружена, и IP пользователя, что можно проверять на сервере...
НО по Вашему плану человек может скачать флешку и запускать её без браузера, и всегда получать желаемое без авторизации.
И вообще куки можно подделать и занимает это пару минут.. Иное дело серверые сессии - но если их передавать во флеше они опять же будут видны злоумышленнику.

Вариант такой - сервер, который авторизует клиента (сайт) и выдает сессию, пишет значение сессии в базу (к примеру юзер Вася имеет сессию 24a6f69c9934c2d6a312650f16b108c5), и эту же сессию передает во флешварс вида
'flashvars', "user_id=24a6f69c9934c2d6a312650f16b108c5"

Далее флешка передает это значение при подключении NetConnection.connect (serverURL, user_id)
Далее сервер делает запрос к базе вида (проверить, есть ли в базе запись 24a6f69c9934c2d6a312650f16b108c5, если да, то разрешить подключение).

Таким образом кто бы ни пытался подделать сессию, в серверную базу он не залезет, соотв не подключится, так что так

Kvecxjo 29.12.2009 12:06

1. Что значит "от клиента"? Клиентом выступает браузер или сама флешка? Если флешка размещена на странице. IP здесь вообще ни при чем.
2. Флешка без браузера по такому плану точно ничего сделать не сможет, т.к. сервер проверяет наличие корректной сессии, значит флешка для этого должна знать id сессии и как-то его передать.

Вопрос состоит в том, правильно ли я понял, что размещенная на странице флешка передает запрос от имени браузера с куками, установленными в нем?

leofit 29.12.2009 12:55

Неправильно

Kvecxjo 29.12.2009 13:33

Допустим, неправильно. Тогда как объяснить происходящее?
PHP код:

session_start();
$fp=fopen('access.log','a');
fwrite($fp,$_SERVER['HTTP_USER_AGENT']."\n");
fwrite($fp,$_COOKIE[session_name()]."\n");
fclose($fp);
<
object ...>здесь вставляем ролик</object

Код AS1/AS2:

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 два обращения к файлу - один раз при загрузке страницы, второй - из флеш. Сессия во флеш та же. Или я чего-то не понимаю?

leofit 29.12.2009 14:42

Вы абсолютно правы.. Проверил в четырех браузерах, проверил настройки апача. Принимающая сторона видит и куки и сессии, и все что надо и не надо. В общем то это даже логично, что плагин работает от имени браузера. Спасибо, что подняли эту тему.

Kvecxjo 29.12.2009 14:55

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

maxlapshin 29.12.2009 22:27

Флеш не шлет куки когда заливает файлы, а вот GET запросы идут с куками.


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

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