2014-08-28 6 views
4

Я работаю с CORS на веб-сайте.CORS с php session

Пример кода:

header("Access-Control-Allow-Origin: *"); 
session_start(); 
$session_id = session_id(); 

Этот код работает отлично, но это возвращающая новый идентификатор сессии каждый раз.

Как сохранить данные сеанса в этой ситуации?

ответ

5

Хотя вы разрешаете доступ из внешних доменов с заголовком Access-Control-Allow-Origin, сам сеанс основан на cookie.

Если скрипт, который делает запрос, доставлен из внешнего домена, он не сможет прочитать файл cookie и передать его на ваш сервер.

Решение: доставить JS, который делает вызов из одного и того же контекста (например, одного протокола/домена/порта) в качестве службы AJAX. Также убедитесь, что сам файл cookie не ограничен другим субдоменом или путем.

Не пытайтесь передать идентификатор сеанса по запросам POST или GET, это сделает ваше приложение уязвимым для CSRF.

Кстати, установка разрешенного источника на * также обескуражена, поскольку его также можно использовать для XSS/CSRF в сочетании с другими методами. Пожалуйста, делайте лимитные запросы стороннему домену.

Последнее, но не менее важное: вы также можете ознакомиться с темой предполетных запросов через HTTP OPTIONS.