PHP / JAVASCRIPT / Mysql: предотвращение инъекций javascript

Это может быть возможный дубликат этого вопроса здесь , но он действительно не подходит и не отвечает на мой вопрос таким образом, что я (глупая голова) могу это понять.
Хорошо, у меня есть формуляр на веб-странице, как показано в моем предыдущем вопросе . Прежде чем использовать $ txtpost для инъекции запросов mysql, я теперь добавил $ txtpost = htmlentities($txtpost, ENT_QUOTES); , который должен защитить меня от XSS-атак. Но, как указывает пользователь php.net , мы не будем защищать меня от javascript-инъекций. Тем не менее, как я могу предотвратить такие инъекции javascript? Как вы можете видеть в коде из предыдущего вопроса, я не знаю, что именно будет введено в текстовое поле, поэтому я не могу допускать только определенные значения. Обратите внимание, что весь код из предыдущего вопроса, который был неправильным, теперь исправлен, и все работает отлично.
VicStudio

Ну, это правда, что вы не будете защищены от людей, помещающих HTML в вашу базу данных.

Прежде всего

 $txtpost = htmlentities($txtpost, ENT_QUOTES); 

Сбегут кавычки, что делает SQL-инъекцию менее вероятной. Но я все еще могу сделать OR 1 = 1 . Это делает каждое утверждение истинным. Современная технология опирается на подготовленные заявления ( как заменить функции MySQL PDO? )

Если вы прочтете выше, вы увидите пример PDO подготовленного оператора. Вы также можете сделать это с помощью MySQLi. Это предотвращает тот факт, что люди могут выполнять SQL-инъекцию.

Во-вторых: Да, я все еще могу

 <a href="javascript:alert(1)">XSS</a> 

В вашу базу данных. Вы должны определить нужные элементы в своей базе данных, используя функцию здравомыслия. PHP дает вам несколько

  • filter_input : Позволяет фильтровать и дезинфицировать определенные данные.
  • strip_tags : позволяет вырезать все теги и / или использовать белый список тегов, которые вы хотите разрешить.
  • htmlspecialchars : преобразует все специальные символы в сущности. Как «к».

Вывод заключается в том, что вам нужно контролировать. Вы решаете, что происходит на вашей странице. Поэтому, если вы хотите быть в безопасности, вы можете фильтровать все и размещать на своей странице как обычный текст. Для безопасности я рекомендую санировать три раза. Перед публикацией материала, когда он передается в базу данных и снова, когда он помещается на страницу. Таким образом, вы минимизируете опасность инъекции.