Хм, я не могу действительно указать какие-либо неуверенности, но задавался вопросом, можете ли вы, если да, как можно патч / исправить?
Вот код:
header("Location: http://example.com/search/{$_POST['term']}/{$_POST['type']}");
Сайт, на который я перенаправляю, также делает валидацию и дезинфекцию на их стороне, но то, что меня беспокоит, – это перенаправление небезопасно (на моей стороне – видя, что я использую прямые $_POST
) ,
Цените всю помощь.
PS: Просто стало любопытно, поскольку я всегда думал, что использование несанкционированного входа пользователя опасно (или, по крайней мере, это относится к XSS и SQLi).
В целом, для большинства веб-сайтов, на которых установлена современная версия PHP, она безопасна .
Есть две проблемы:
/search/*/*
на сайте, связывая их со вредоносной страницей, которая отправляет сообщения на страницу с вашей перенаправлением. (Обратите внимание, что они не ограничиваются двумя сокращениями после /search
потому что их переменные POST могут содержать слэши.) Это похоже на передачу кому-то сокращенного URL-адреса bit.ly, который перенаправляет их, поэтому это не так уж плохо. \r\n
) в своих POST-данных, они могут вызвать вызов header()
для вывода нескольких заголовков, включая заголовки для установки файлов cookie и т. Д. Однако с PHP 5.1.2 это исправлено . Это не проблема безопасности, но вы должны, вероятно, URL-кодировать эти аргументы с помощью urlencode($_POST['term'])
.
Да, это довольно неуверенно. НИКОГДА НИКОГДА НЕ ВКЛЮЧАЕТ НЕПРЕРЫВНЫЙ ВХОД пользователя в скрипт. Я рекомендовал бы, как минимум , использовать filter_input_array для дезинфекции вашего массива $ _POST, прежде чем что-либо делать с ним.
Надеемся, что веб-уровень, который получает перенаправленный URL-адрес от клиента, выполнит проверку по URL-адресу в целом, поэтому вы, вероятно, будете в безопасности. Но это не помешало бы запустить эти два поля с помощью простой проверки перед отправкой перенаправления.
Я думаю, вы найдете это прочитанное стоящим.