Санируйте $ _GET параметры для предотвращения XSS и других нападений

Любой вход от клиента - это способы быть уязвимыми. Включая все формы и строку запроса. Это включает в себя все HTTP-глаголы.

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

13
задан Federico klez Culloca 19 October 2009 в 09:19
поделиться

3 ответа

$page = preg_replace('/[^-a-zA-Z0-9_]/', '', $_GET['page']);

Это, вероятно, самый быстрый способ очистить это, это потребует чего угодно и убедитесь, что он содержит только буквы, цифры, подчеркивания или тире.

30
ответ дан 1 December 2019 в 18:49
поделиться

Не проводить «дезинфекцию» - атаки относятся к использованию данных, а не источника. Экранируйте значения при их выводе. См. Также мой ответ на Какой лучший метод очистки пользовательского ввода с помощью PHP?

7
ответ дан 1 December 2019 в 18:49
поделиться

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

$AVAILABLE_PAGES = array('home', 'news',  ...);
$AVAILABLE_PAGES = array_fill_keys($AVAILABLE_PAGES, 1);

$page = $_GET['page'];
if (!$AVAILABLE_PAGES[$page]) {
   header("HTTP/1.0 404 Not Found");
   die('Page not found.');
}

include "pages/$page.php";
4
ответ дан 1 December 2019 в 18:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: