PHP: Есть ли какая-то санитарная обработка, которая мне нужна для использования данных _GET?

Для просто регулярного использования в моем PHP-коде, то есть. Не то, что я собираюсь передать его моим запросам или чему-то еще.

  • Если вы передадите их SQL-запросам, вы получите SQL-инъекцию
  • Если вы используете их для формирования имен файлов, вы получаете произвольную уязвимость чтения файлов
  • Если вы выведете их как есть для пользователя как часть HTML-страницы, вы получите уязвимость XSS
  • Если вы выведете их в файл, вы можете получить неверный файл, если он имеет некоторое предопределенное форматирование
  • Если вы просто сравниваете значение с набором предопределенных значений, вы в порядке.
  • Если вы конвертируете его в число, вы в порядке, пока любое число работает для вас

На это действительно можно ответить, только пройдя свой код, и посмотрев, что он делает. В вашем коде могут быть подводные камни (например, плохо построенный оператор switch ), которые могут потребовать санитарии.

Помимо запросов к базе данных, общие сценарии, в которых вам необходимо дезинфицировать входящие данные, включают:

  • Используя его в имени файла
  • Используя его для включения файла
  • Используя его для передачи параметров программе, выполняемой через exec()
  • Вывод его в HTML

Вам нужно, чтобы ваше приложение и его безопасность требовали, имея в виду, что вы можете получить абсолютно что угодно (или ничего) в параметре $_GET . Возможно, вы не используете значение в запросах, но вы можете подвергнуться атаке межсайтового скриптинга, если вы, например, слепо используете значение на странице. Веб-сайты «безвредные» могут легко попасть в межсайтовый скриптинг.

Никогда не доверяйте пользовательскому вводу, да?

Вы должны дезинфицировать переменные в зависимости от их содержания и использования.

поэтому, если у вас есть такая переменная:

  • $_GET['page_id']

И ваше использование в базе данных, а затем ваша санировка.

если у вас есть такая переменная:

  • $_GET['action']

И ваше планирование использования, как

  • require_once "pages/" . $_GET['action'] . ".php"

тогда вы санируете, прежде чем это сделать, иначе просто убедитесь, что register_globals выключен, и вы будете в порядке, пока вы не используете их в местах без значительных размышлений

Все, что не приходит с вашего сервера, должно быть дезинфицировано! Это включает $_GET, $_POST, $_SERVER чтобы назвать несколько.