Простейшие методы XSS защиты

В мире веб разработки очень важно рассматривать свой код с точки зрения безопасности от взлома и инъекций.

Особенно если это работа с web запросами и(или) куками
Особенно если есть работа и запись в базу данных
Особенно если проект работает с деньгами

Работу (особенно эту “рутину”) облегчают фреймворки. В любом современной фреймворке есть методы очищающие или защищающие параметры запроса от инъекций или вредоносного кода. Их преимущества в универсальности. Их недостатки в производительности.

Кстати, один из видов вредоносного вектора атаки — это эксплуатировать время очистки параметров от скриптов (для упрощения будем называть это XSS). Т.е., злоумышленник посылает множество запросов в ту область которая будет долго обрабатывать запросы и тормозить сервер. Ведь под капотом стандартных методов защиты от XSS различные сложные регулярные выражения с заменами.

Альтернативой являются простейшие методы защиты от XSS, там, где это применимо

  1. Приведение к простейшему типу.
    Если мы знаем, что получаемый GET параметр должен быть целочисленным — мы просто можем привести его к целочисленному перед дальнейшем обработкой или же отклонять запросы, если этот параметр не целочисленный.
    Так же можно поступать, если, например, мы знаем, что получаемый параметр может принимать только определенные значения.
$cleanParam = (int)$_GET["dirtyParam"];
  1. Простые регулярные выражения, заточенные под получаемый параметр
    Обрабатываемый параметр может, например, состоять только из цифр и букв английского алфавита. Незачем “прогонять” его по всем кругам регулярно стандартной защиты от XSS. Можно написать простую регулярку.
if( preg_match("/^[a-zA-Z\d]+$/", $_COOKIE["dirtyParam"]) )