Каждый раз, при добавлении записей в БД, приходилось проверять его на SQL инъекцию. А на XSS делать постоянно.
Решил сделать простой метод. Вставить этот код в самое начало всего
З.Ы. Оставил комментарии, чтобы не вникать:
function saveArray($arr){ // Функция для защиты от XSS и SQL
$r = array(); // Создать массив для возврата
foreach ($arr as $k => $v){ // Для каждого элемента в массиве для фильрации
if( strstr($k, 'no-save') ) // Если у ключа массива есть слово 'no-save'
continue; // перейти к следующему
if( $v == "" ){ // Если пустое значение
$r[$k] = false; // то значение равен false
continue; // К следующему
}
if( ctype_digit($v) ){ // Если все символы в строке - цифра
$r[$k] = (int) $v; // перевести в тип int
continue; // К следующему
}
if( is_array($v) ){ // Если это массив
$r[$k] = saveArray($v); // провести через функцию
continue; // К следующему
}
$arr[$k] = htmlspecialchars($v); // Иначе убрать все HTML символы
}
return $r; // Вернуть массив
}
$_GET = saveArray($_GET); // Фильтрация $_POST
$_POST = saveArray($_POST); // Фильтрация $_GET
Можно ли это считать "правильным" и использовать его на реальных проектах?
Или все же есть недостатки, из-за чего лучше не стоит это делать?