Хорошо ли использовать htmlspecialchars () перед вставкой в ​​MySQL?

Я немного смущен этим. Я читал о htmlspecialchars() и я планирую использовать это для htmlspecialchars() POST чтобы предотвратить атаку XSS. Я понимаю, что обычно htmlspecialchars() используются для генерации вывода HTML, который отправляется в браузер. Но я не уверен:

1) Безопасно ли использовать htmlspecialchars() для пользовательских входных данных, прежде чем вставлять их в MySQL? Я уже использую подготовленный отчет PDO с параметризованными значениями, чтобы предотвратить SQL Injection.

2) Или мне действительно не нужно беспокоиться об использовании htmlspecialchars() для вставленных значений (при условии их параметризации) и использовать только htmlspecialchars() когда я получаю результаты из MySQL и отображаю их пользователям?

Как указывали другие, № 2 – правильный ответ. Оставьте его «сырым» до тех пор, пока он вам не понадобится, а затем убежайте.

Чтобы уточнить, почему (и я буду повторять / обобщать другие сообщения), давайте рассмотрим сценарий 1 до его логической крайности.

Что происходит, когда кто-то вводит « ' OR 1=1 <other SQL injection> -- ». Теперь, возможно, вы решили, что, поскольку вы используете SQL, вы должны кодировать для SQL (возможно, потому, что вы не использовали параметризованные утверждения). Итак, теперь вы должны смешивать (или решать) SQL и HTML-кодирование.

Неожиданно ваш босс решает, что ему нужен вывод XML. Теперь, чтобы сохранить ваш шаблон согласованным, вам также нужно закодировать.

Следующий CSV – о нет! Что делать, если в тексте есть цитаты и запятые? Больше побегов!

Эй, как насчет приятного интерактивного интерфейса AJAX? Теперь вы, вероятно, захотите начать отправку JSON обратно в браузер, так что теперь {, [и т. Д. Все должны быть приняты во внимание. ПОМОГИТЕ!!

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

Надеюсь, этот ответ не слишком покровительствует. Кредит другим респондентам.