2013-04-05 7 views
0

В php, согласно руководству: «Посетителю, обращающемуся к вашему веб-сайту, присваивается уникальный идентификатор, так называемый идентификатор сеанса. Он либо хранится в файле cookie на стороне пользователя, либо распространяется в URL. "Распространение сеансов по URL-адресу

Когда и почему Должен ли я предпочитать передавать сеансы через URL, а не в файл cookie?

+0

Если вы боитесь, что пользователи не передают файл cookie – Victor

ответ

0

Чтобы ответить на этот вопрос,

Cookies могут быть изменены (гм да взломан), но сессии не могут.

+0

, то имеете ли вы в виду, что передача сеансов через URL-адрес более безопасна, чем подход к cookie? – depz123

+0

Это ничего не значит. Файлы cookie представляют собой пользовательский ввод с точки зрения обслуживания. Когда токен сеанса передается через файл cookie, если вы передаете неправильный текст, вы не аутентифицированы. – Raffaele

+0

@ user1463541, точно. –

1

Главное отличие состоит в том, что токен сеанса может быть отправлен в другой домен через реферер, но это можно было бы смягчить, проверив исходный IP-адрес. Кроме того, файлы cookie отправляются в заголовках HTTP, URL-адрес заканчивается в строке запроса. Нет никакой реальной разницы в безопасности, потому что HTTPS шифрует оба. Но URL-адрес запроса может быть записан в файл журнала, и это (незначительный, очевидно) риск.

Файлы cookie являются обработчиками по умолчанию для передачи токенов сеанса, но вы можете вернуться к параметру в строке запроса, когда они отключены на стороне клиента.

+0

Ваше последнее предложение предполагает, что я должен реализовывать сеансы через ** оба ** cookie и url в моем приложении и использовать последний подход в качестве резервной копии, если пользователь отключил файлы cookie .. правильно? – depz123

+0

На самом деле я предлагаю использовать только файлы cookie :) не так просто реализовать версию URL-адреса, есть последствия для безопасности, с которыми вы должны смотреть, и никто действительно не отключает файлы cookie (или JavaScript btw) – Raffaele

0

сессии в URL:

  1. Это довольно большой объем работы, чтобы довести до конца сессии идентификаторов в в URL.
  2. Это небольшая работа по исправлению проблем безопасности, возникающих в результате куки-файлов.
  3. Это выглядит уродливым, чтобы каждый URL имеет оканчивающиеся session_id = foobar23454364634

сессия в печенье:

  1. Это почти не объем работы, чтобы нести session_id с печеньем.
  2. Это средний объем работы, который должен быть осведомлен о проблемах безопасности, вызванных sessino cookie (XSRF).
  3. Адрес не изменен.

Вы можете либо выбрать способ реализации обоих вариантов, и позволить пользователю выбрать.

Смежные вопросы