Защита от SQL injection и XSS
Приведенная в статье функция защищает от атак типа SQL injection и XSS
Описание
Эта простая в использовании функция поможет вам защитить себя
от атак типа
SQL injection и
XSS. Чаще всего их проводят используя GET или POST запросы которые не фильтруются на стороне сервера. Используя данную функцию в качестве фильтра входящих данных вы сможете частично обезопасить себя.
Исходный код функции secureInnerData
Алгоритм предельно простой:
- удаляем пробелы из конца строки
- удаляем пробелы из начала строки
- преобразует специальные символы в HTML сущности
- возвращаем очищенные данные
//функция защищает от атак типа SQL injection и XSS
function secureInnerData($data)
{
//удаляем пробелы из конца строки
$data=rtrim($data);
//удаляем пробелы из начала строки
$data=ltrim($data);
//преобразует специальные символы в HTML сущности
$data=htmlspecialchars($data);
//возвращаем очищенные данные
return $data;
}
Использование функции secureInnerData
Допустим нам надо отфильтровать параметр data который передается на сервер с помощью GET запроса. Выглядеть фильтрация будет так:
$data=secureInnerData($_GET['data']);
О реализации
rtrim(), ltrim() удаляют из конца и начала строки соответственно:
" " (ASCII 32 (0x20)), символ пробела.
"\t" (ASCII 9 (0x09)), символ табуляции.
"\n" (ASCII 10 (0x0A)), символ перевода строки.
"\r" (ASCII 13 (0x0D)), символ возврата каретки.
"\0" (ASCII 0 (0x00)), NUL-байт.
"\x0B" (ASCII 11 (0x0B)), вертикальная табуляция.
htmlspecialchars() преобразует специальные символы в HTML сущности:
'&' (амперсанд) преобразуется в '&'
'"' (двойная кавычка) преобразуется в '"' when ENT_NOQUOTES is not set.
''' (одиночная кавычка) преобразуется в ''' только в режиме ENT_QUOTES.
'<' (знак "меньше чем") преобразуется в '<'
'>' (знак "больше чем") преобразуется в '>'