Существуют разные контексты для ваших данных. Контекст вставки данных в базу данных должен быть экранирован иначе, чем контекст рендеринга html / xml или даже сообщения электронной почты.
Экранирующие данные, поступающие в БД, должны быть исключены во всем новом коде в пользу подготовленных операторов. Любой, кто говорит вам иначе, оказывает вам плохую услугу.
Экранирующие данные, поступающие в браузер, необходимо экранировать несколькими различными способами в зависимости от цели. Иногда достаточно htmlspecialchars, иногда вам нужно использовать htmlentities. Иногда вам нужны числовые объекты. Это тема, над которой вам следует провести исследование, чтобы узнать все нюансы.
Общее правило, по которому я живу, это проверять (не фильтровать, отклонять, если неверно) ввод и выход (в зависимости от контекста).