Так, я кодировал для немного (2 года), и у меня есть очень субъективный вопрос:
Разве неправильно использовать $ _REQUEST для Данных?
Это главным образом принадлежит аутентификации между прочим.
Если Вы думаете об этих 3 путях, данные могут произойти в $_REQUEST
, это может прибыть или из cookie, формы или из строки запроса. Теперь, я знаю, что большинство людей непосредственно захватывает информацию от также $_POST
или $_GET
, использование $_COOKIE
только, когда они ожидают cookie.
Моя теория состоит в том, что в действительности, не должно быть никакого различия в этих данных, и это не должно иметь никакого значения, если бы Вы заменили $_POST
или $_GET
с $_REQUEST
.
Если Вы аутентифицируете пользователя в систему, делает действительно имело значение, если детали аутентификации содержатся в $_POST
или $_GET
массив? Heck, вероятно, не должно иметь значения, если они находятся в $_COOKIE
также. Они все еще дают Вам учетные данные для вхождения в сайт, который необходимо проверить на правильность, и раз так регистрировать их в.
Теперь, я действительно понимаю, что существуют проблемы безопасности, при попытке иметь форму входа в систему, которая отправляет данные через строку запроса, но я не полагаю, что это принадлежит вопросу. Кроме того, если кто-то приводит вход в систему к сбою слишком много раз, там должен существовать надлежащий предельный набор, чтобы не перегружать сервер.
Я хотел бы к здесь мнению об этом.
Общественный Wiki'd в придачу.
О, и просто между прочим, вот другие вопросы о StackOverflow, которые имеют отношение, если у Вас есть другие вопросы о $_REQUEST
Почему я должен использовать $ _GET и $ _POST вместо $ _REQUEST? Когда и почему должен $ _REQUEST использоваться вместо $ _GET / $ _POST / $ _COOKIE?
В "хорошей" практике кодирования вы хотите устранить неоднозначность как можно больше.
Поскольку $ _REQUEST по умолчанию содержит данные из $ _POST, $ _GET и $ _COOKIE, значение, содержащееся в переменной, которая хранит данные, полученные с помощью $ _REQUEST, будет неоднозначным относительно того, какие
Если мы будем более конкретными, это улучшит читаемость кода, а также понимание логики и поможет отладке в будущем.
(Не говоря уже о проблемах безопасности, касающихся каждого метода, особенно $ _GET один)
Я бы сказал, избегайте всего этого вместе. Я согласен с Севом в том, что устранение неоднозначности важно по многим причинам (отладка, ясность / самодокументирование, элегантность и т. Д.), Но могут возникнуть серьезные проблемы с безопасностью, и это была бы моя основная причина избегать этого.
В качестве простого примера, что происходит, когда один и тот же ключ отправляется в двух массивах (например, $ _ POST ['criticalInfo']
и ] $ _ GET ['criticalInfo']
)? Как и в случае с большинством проблем безопасности, уязвимости проявляются в индивидуальной реализации, поэтому было бы невозможно угадать ваши конкретные риски. Дело в том, что двусмысленность часто открывает дыры.
Не оставляйте на усмотрение "variables_order" в PHP_INI, чтобы определить, откуда ваш скрипт получает переменные. Используйте $ _GET, $ _POST и т. Д.
Это неверно ? Нет.
Он хуже $ _ GET
или $ _ POST
? Да. Используйте правильный массив, и вы избежите всевозможных проблем, связанных с незнанием, откуда взялось содержимое массива $ _ REQUEST
.
Речь также идет о том, чтобы учетные данные не приходили никаким другим способом, кроме запроса POST. Я бы не хотел, чтобы мой запрос GET имел побочные эффекты (например, вход в систему пользователя).