Как я могу получить Flash для обмена файлами cookie / сеансом браузера? - PullRequest
3 голосов
/ 02 марта 2009

Я создаю веб-приложение на основе PHP и интегрирую движок построения диаграмм на основе Flash. Флэш-диаграмма должна сделать AJAX-запрос для своих данных. Этот запрос не выполняется, поскольку он рассматривается как новый пользовательский агент и не содержит cookie-файл сеанса PHP для его идентификации. Таким образом, он перенаправляется на страницу входа.

Я прочитал несколько хаков, чтобы заставить это работать, включая предоставление идентификатора сеанса в строке запроса, но это открывает дыры в безопасности. Как заставить Flash и PHP автоматически делиться состоянием сеанса на основе файлов cookie и оставаться в безопасности?

Ответы [ 5 ]

2 голосов
/ 04 марта 2009

В IE это будет работать наивно. В Firefox единственный способ добиться этого - поместить POST идентификатор сеанса во флэш-скрипт (процессор php) и заставить его восстановить сессию из этого.

1 голос
/ 18 марта 2009

Вы должны знать, что передача идентификатора сеанса в заголовке Cookie: или в поле аргумента директивы GET HTTP не отличается безопасностью.

1 голос
/ 02 марта 2009

Если сеансовый cookie-файл инициирован достаточно рано, значит, все должно быть в порядке. У меня была похожая проблема с cookie-файлами, общими для JavaScript AJAX и Flash-запросов (если вы хотите также вызвать этот AJAX, продолжайте :-)), и мы решили их, убедившись, что JavaSCript завершил запрос, который инициировал cookie-файл раньше достаточно, чтобы когда Flash отправлял запрос, в браузере уже был файл cookie сеанса.

Также было бы неплохо убедиться, что путь к cookie был установлен в "/".

При этом, если вы не можете заставить его работать - как уже говорилось - вы можете сохранить информацию в HTML DOM с помощью вызова JavaScript AJAX, а затем извлечь ее из объекта Flash с помощью вызова ExternalInterface. Но убедитесь, что в вашем Flash-объекте установлено не менее «allowScriptAccess = sameDomain»

0 голосов
/ 06 марта 2009

вы можете попробовать отправить в php 2 параметры один session_id и второй, который является ключом, который объединяет некоторую информацию от клиента (ex ip) и шифрует ее ключом, хранящимся на сервере, и по запросу от flash you проверьте, что вторые параметры соответствуют запросу клиента, таким образом, если кто-то пытается выполнить кражу сеанса, он не может, потому что он не будет соответствовать второму параметру

0 голосов
/ 02 марта 2009

Используйте ExternalInterface, чтобы поговорить с диаграммой Flex. Некоторая информация, относящаяся к браузеру, также может передаваться через классы LoaderContext и BrowserManager. Окунитесь в документацию AS3.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...