Всесторонняя защита от входа пользователя – PHP, MySQL

Возможный дубликат:
Каков наилучший метод для дезинфекции пользовательского ввода с помощью PHP?
Каковы наилучшие функции деструкции ввода PHP?
Конечная чистая / безопасная функция

Цель : Правильно дезинфицировать все входы из текстовых полей перед входом в БД, который затем выводится на страницу. Для моего варианта использования мне необходимо предотвратить потенциальные проблемы, не устраняя ввод данных. Кроме того, в кодировке явно установлен UTF-8 как в заголовке HTTP, так и в теге META, чтобы предотвратить проблемы с искаженной кодировкой. БД также установлена ​​в UTF-8.

Спецификации : PHP, MySQL, Apache

Образец кода :

function secureinput($input) { $input = htmlspecialchars($input, ENT_QUOTES ,'UTF-8'); $input = strip_tags($input); //fail-safe for anything that gets through $input = mysql_real_escape_string($input); return $input; } 

Вопрос : Какие векторы атаки (XSS, SQL Injection и т. Д.) Все еще уязвимы?

Огромное спасибо всем, кто может помочь. Это моя первая публикация, хотя я всегда обращался к SO сначала для поиска ответов на мои вопросы. К сожалению, на этот раз я не мог найти никаких других вопросов, которые отвечали на мою проблему, только небольшие ее части.

XSS-атаки

Используя htmlspecialchars () всякий раз, когда вы выводите содержимое, введенное пользователем, вы можете убедиться, что вы будете в безопасности от атак XSS.

SQL-инъекция

Стив Фридл предлагает некоторые примеры SQL-инъекций и ограничений входной санитарии на своем веб-сайте: http://www.unixwiz.net/techtips/sql-injection.html

Несмотря на то, что ваш код может быть защищен от атак SQL-инъекций с помощью mysql_real_escape_string (), вам лучше использовать параметризованный SQL и вообще исключить риск SQL-инъекции. Вы также будете намного более безопасными, если вы используете PDO или mysqli в PHP вместо устаревших функций mysql.