Сеансы и куки обычно считаются входными данными? - PullRequest
1 голос
/ 20 декабря 2011

Я считаю $_GET и $_POST входными данными для веб-приложения, написанного на PHP.Это потому, что они содержат значения, которые пользователь может определить и которые «приходят» вместе с HTTP-запросом.Но являются ли сеансы и файлы cookie одинаковыми?

Этот вопрос возник у меня, когда я читал итальянскую страницу PHP в Википедии, в которой говорится, что общие входные данные - $_GET, $_POST и $_SESSION.

Ответы [ 4 ]

2 голосов
/ 20 декабря 2011

Если для ввода вы имеете в виду «все, что поступает в запросе» (то есть, то, что требует проверки и т. Д.), Вы должны указать:

  • переменные POST / GET ($_POST, $_GET)
  • Печенье ($_COOKIE)
  • Путь запроса ($_SERVER["REQUEST_URI"])
  • Метод HTTP ($_SERVER["REQUEST_METHOD"])
  • Заголовки HTTP (обычно в $_SERVER["HTTP_"*])

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

Обновление - около $_REQUEST

Как уже указывалось, в PHP у вас также есть доступ к $_REQUEST, который представляет собой набор переменных из $_GET, $_POST, $_COOKIE. Точное содержание $_REQUEST определяется директивой request_order в php.ini.

1 голос
/ 20 декабря 2011

$_SESSION содержит только то, что вы сами положили туда. Однако $_COOKIE следует считать недоверенным пользовательским вводом вместе с $_GET, $_POST.

Единственная точка пересечения, о которой я могу подумать, - это конечный пользователь, пытающийся предоставить специально созданное PHPSESSID через $_COOKIE в надежде получить доступ к сеансу другого пользователя.

Если вы непосредственно не сохраните другой ввод ($_GET, $_POST, $_COOKIE) в $_SESSION, ему можно доверять.

// Oops, $_SESSION['someval'] now holds unfiltered user input!
$_SESSION['someval'] = $_POST['someval'];
0 голосов
/ 20 декабря 2011

php имеет глобальную переменную с именем $ _REQUEST * Ассоциативный массив, который по умолчанию содержит содержимое $ _GET, $ _POST и $ _COOKIE *

Переменные в $ _REQUEST предоставляются сценарию с помощью механизмов ввода GET, POST и COOKIE и поэтому могут быть изменены удаленным пользователем и не могут быть доверенными.

Значения, определенные в $ _REQUEST, определяются пользователем в браузере.

Переменные в $ _SESSION не могут быть изменены браузером. Они модифицируются только php, и обычно их можно считать доверенными.

0 голосов
/ 20 декабря 2011

Данные сеанса не могут быть напрямую введены пользователем, если вы где-то не создали эту функцию в своем приложении; такие как:

$_SESSION['lastSearch'] = $_GET['search'];

Если ваше приложение имеет аналогичные функциональные возможности или вы не уверены; Я бы все же отфильтровал / очистил ваши данные, напечатав их на странице или используя в выражении SQL. Лучше быть в безопасности, чем потом сожалеть.

Однако данные cookie могут быть легко изменены и считаются прямыми ВХОДАМИ.

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