Защита от 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)), вертикальная табуляция.
" " (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.
'<' (знак "меньше чем") преобразуется в '<'
'>' (знак "больше чем") преобразуется в '>'
'"' (двойная кавычка) преобразуется в '"' when ENT_NOQUOTES is not set.
''' (одиночная кавычка) преобразуется в ''' только в режиме ENT_QUOTES.
'<' (знак "меньше чем") преобразуется в '<'
'>' (знак "больше чем") преобразуется в '>'
Комментариев нет:
Отправить комментарий