Возможный дубликат:
Каков наилучший метод для дезинфекции пользовательского ввода с помощью 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 сначала для поиска ответов на мои вопросы. К сожалению, на этот раз я не мог найти никаких других вопросов, которые отвечали на мою проблему, только небольшие ее части.
Используя htmlspecialchars () всякий раз, когда вы выводите содержимое, введенное пользователем, вы можете убедиться, что вы будете в безопасности от атак XSS.
Стив Фридл предлагает некоторые примеры SQL-инъекций и ограничений входной санитарии на своем веб-сайте: http://www.unixwiz.net/techtips/sql-injection.html
Несмотря на то, что ваш код может быть защищен от атак SQL-инъекций с помощью mysql_real_escape_string (), вам лучше использовать параметризованный SQL и вообще исключить риск SQL-инъекции. Вы также будете намного более безопасными, если вы используете PDO или mysqli в PHP вместо устаревших функций mysql.