пароль htmlspecialchars для перестраховки
зачем?
htmlspecialchars кодирует служебные символы html. Зачем ее применять для пароля?
И вообще, пароль у вас никогда нигде не хранится в открытом виде, только его хеш и то внутри системы.
минимальную фильтрацию где это необходимо
верное направление мысли.
Необходимо в двух местах:
1. запись базу
2. вывод на страницу
Чтобы защититься от sql-injection при записи, используйте подготовленные запросы.
Чтобы не сломать верстку при выводе данных — используйте htmlspecialchars при рендере страницы. А лучше возьмите шаблонизатор. Они все по умолчанию эскейпят вывод.
разрешить в логин и имя только a-zа-яё0-9
Это уже не фильтрация, а валидация данных, к безопасности особого отношения не имеет и выполняется в других местах приложения.
Простой пример. Пользователь отправил форму.
Вы первым делом сделаете проверку всех полей на допустимые значения, на заполненность и т.д., и если что вернете посетителя обратно на форму с указанием ошибки. Данные здесь не изменяются.
Если все в порядке, вы будете писать эти данные в базу. Как я уже написал, используя подготовленный запрос. Опять же, ничего менять в них не требуется.
Потом, вы будете эту информацию где-то выводить на странице. Вот здесь уже, перед выводом, вы прогоните все через htmlspecialchars, возможно какие-то еще корректировки сделаете.
Но, опять же вы пишете про универсальную фильтрацию на все случаи. Так не бывает.
Если вы ожидаете во входных данных исключительно текст, то можно, например, смело резать все теги перед записью в базу. А если вы получаете их из визуального редактора, с разметкой, то резать теги уже не нужно.