Запрет на редактирование / скрытие параметров в URL - PullRequest
1 голос
/ 25 июня 2011

У меня есть список строк, которые я выбрал, используя mysql_fetch_array().Теперь я создал гиперссылку этих значений, но проблема в том, что я не хочу отправлять идентификатор через гиперссылку.То есть, если по элементу щелкнуть мышью, он перейдет к view.php, но значения будут отправлены через скрытую переменную.

Есть ли способ сделать это?Если нет, то как я могу отправить значения через адресную строку, чтобы значения не редактировались программой просмотра?то есть id не редактируется пользователем ...

Ответы [ 3 ]

4 голосов
/ 25 июня 2011

Обычно вы хотите либо.) Скрыть идентификаторы, либо b.) Ограничить идентификаторы, которые может просматривать пользователь.

Для достижения первого вы можете сгенерировать случайный хеш для каждой записи в базе данных, который намного длиннее идентификатора и очень трудно угадать (hash('sha512', time() + $row['id'])). Вы можете использовать эти уникальные хеши вместо идентификаторов в ссылках.

Другой подход в значительной степени зависит от вашего приложения: вы можете отслеживать идентификаторы, которые вы предоставили пользователю в сеансе, и отклонить запрос страницы (отправить ответ HTTP 403 ), если идентификатор был нет в его списке. Однако злоумышленник может сначала вызвать другие страницы (если это возможно в вашем приложении), чтобы заполнить этот список ссылок в своем сеансе.

В любом случае, вам не гарантирован успех, но вы можете сделать атаку намного сложнее.

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

0 голосов
/ 25 июня 2011

Чтобы сделать это немного сложнее, вы можете зашифровать идентификатор и расшифровать его, как только вы получите его на view.php, таким образом, становится трудно прогнозировать и возиться с этим.Например, что-то вроде URL-адреса YouTube видео

0 голосов
/ 25 июня 2011

Нет способа сделать это.

Я имею в виду, ID или какое-то уникальное значение просто должно быть отправлено, чтобы сообщить серверу, что вы запрашиваете.Это простая логика.

Однако, чтобы немного усложнить «изменение значения», вы можете использовать AJAX.Запрос с использованием идентификатора все еще отправляется, но в фоновом режиме и обычный пользователь ничего не заметит.Осторожно, кто-то, обладающий небольшими техническими знаниями, сможет исследовать запросы, и для этого достаточно просто использовать Firebug или какой-либо другой инструмент разработки, так что вы все равно ничего не получите.

Если вы думаете, что могли бы извлечь выгоду из такоговещь, поверь мне, ты не будешь.Это не способ справиться с безопасностью, если это было ваше намерение.

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