URI против скрытых форм - PullRequest
1 голос
/ 11 июня 2009

Я работаю в CodeIgniter и хочу отправлять запросы на мой контроллер / модель, которые имеют несколько параметров. Есть ли разница между передачей этих параметров через скрытую форму (т. Е. С использованием $_POST) по сравнению с передачей их через URI (например, «travel / $ month / $ day /»)? Есть ли какие-либо проблемы безопасности с этим подходом?

Пример проблемы безопасности :

Ответы [ 4 ]

3 голосов
/ 11 июня 2009

Практическое правило - запросы GET никогда не должны менять положение вещей. Поэтому, если вы действительно что-то изменили или запросили - используйте скрытые формы со значениями nonce (чтобы предотвратить случайные повторные отправки и CSRF-атаки ). В противном случае нет никакой разницы.

Аутентификация должна быть отделена от URI и данных POST - есть куки, HTTP-аутентификация и SSL-сертификаты клиента. Всем известно, что в 2009 году 11 июня, и многие люди могут знать, что вы используете схему /$year/$month/$day/ в URI (или в полях «год», «месяц» и «день») на вашем сайте. Но только те, кто имеет право на доступ, должны видеть, что находится на этой странице (или данные POST для этого URI). И да, данные GET и POST могут быть легко подделаны, поэтому вам, очевидно, нужно проверить их достоверность.

0 голосов
/ 21 мая 2010

Я недавно столкнулся с этой же проблемой. Когда в URL появляется что-то дополнительное, вы рискуете разоблачить методы / данные сайта. После долгих исследований я решил показывать переменные только тогда, когда это абсолютно необходимо или если страница была просто представлением. Чем больше данных вы предоставляете в своем URL, тем больше проверок вам, вероятно, нужно будет ввести (что, если пользователь изменяет URL-адрес x-способом).

Еще одним соображением является возможность создавать закладки или ссылки на URL-адреса (предположительно просмотры). Одна идея состоит в том, чтобы скрыть переменные в URL через зашифрованную строку. Затем вы можете сохранить зашифрованную строку в вашей базе данных и при необходимости сериализовать. Я сделал это для поисковой системы, и это дало мне лучшее из обоих миров. Это было с CodeIgniter.

0 голосов
/ 11 июня 2009

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

Честно говоря, в вашем примере недостаточно данных, чтобы определить, какой метод (POST / GET) вам подойдет.

Рекомендуемое чтение: ПОЛУЧИТЬ против ПОЧТЫ в плане безопасности?

0 голосов
/ 11 июня 2009

Если вы выбираете URI, если пользователь добавляет закладки в URL,
это приносит проблемы с безопасностью.

и, если пользователь щелкает по любой ссылке,
тогда целевой веб-сервер теперь может знать
HTTP_REFFER и администратор сервера
могу знать ссылку.

это означает, что он может видеть URI.

поэтому мое личное мнение таково, что
Вам лучше выбрать скрытую форму.

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