Самый простой способ избежать ошибок при дезинфекции входных данных и экранирующих данных - использовать фреймворк PHP, такой как Symfony , Nette и т. д. или часть этой структуры (механизм шаблонов, уровень базы данных, ORM).
Шаблонный движок, такой как Twig или Latte, имеет выход по умолчанию - вам не нужно решать вручную, если вы правильно экранировали свой вывод в зависимости от контекста (HTML или Javascript на веб-странице).
Framework автоматически дезинфицирует входные данные, и вы должны использовать переменные $ _POST, $ _GET или $ _SESSION напрямую, но через механизм, такой как маршрутизация, обработка сеансов и т. д.
И для уровня базы данных (модели) существуют рамки ORM, такие как Doctrine или обертки вокруг PDO, такие как Nette Database.
Здесь вы можете узнать больше об этом - Что такое программная среда?