Это может быть возможный дубликат этого вопроса здесь , но он действительно не подходит и не отвечает на мой вопрос таким образом, что я (глупая голова) могу это понять.
Хорошо, у меня есть формуляр на веб-странице, как показано в моем предыдущем вопросе . Прежде чем использовать $ 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 дает вам несколько
Вывод заключается в том, что вам нужно контролировать. Вы решаете, что происходит на вашей странице. Поэтому, если вы хотите быть в безопасности, вы можете фильтровать все и размещать на своей странице как обычный текст. Для безопасности я рекомендую санировать три раза. Перед публикацией материала, когда он передается в базу данных и снова, когда он помещается на страницу. Таким образом, вы минимизируете опасность инъекции.