понедельник, 27 мая 2013 г.

Защита от SQL injection и XSS (функция secureInnerData )

Защита от SQL injection и XSS

Приведенная в статье функция защищает от атак типа SQL injection и XSS

Описание

Эта простая в использовании функция поможет вам защитить себя  от атак типа SQL injection и XSS. Чаще всего их проводят используя GET или POST запросы которые не фильтруются на стороне сервера. Используя данную функцию в качестве фильтра входящих данных вы сможете частично обезопасить себя.

Исходный код функции secureInnerData 

Алгоритм предельно простой:
  1. удаляем пробелы из конца строки
  2. удаляем пробелы из начала строки
  3. преобразует специальные символы в HTML сущности
  4. возвращаем очищенные данные
//функция защищает от атак типа 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.
 '<' (знак "меньше чем") преобразуется в '&lt;'
 '>' (знак "больше чем") преобразуется в '&gt;'

Комментариев нет:

Отправить комментарий