htmlentities прекрасно работает во многих случаях.Тем не менее, я считаю, что лучший способ предотвратить такие вещи, как XSS - это внесение в белый список допустимых символов.Например:
Имя человека может состоять из прописных и строчных букв, пробелов, дефисов и, возможно, апострофов.Таким образом, полные имена, введенные в вашу систему, должны соответствовать регулярному выражению /^[a-z'- ]+$/i
.
Примеры: Генри Смит, Джон О'Нил, Хизер Фишер-Садовник.
Письмо может содержатьсимволы в верхнем и нижнем регистре AZ, цифры, плюсы, тире, точки и символ в.Таким образом, регулярное выражение для электронной почты будет: /[a-z0-9-.+]@[a-z0-9-.]+/i
.
Примеры: jeff.Atwood@stackoverflow.com, spammer123@yahoo.com, leet+hacker@gmail.com, php-list @php.net
Вы можете расширить это, чтобы соответствовать любому вводу данных.Подумайте только, какие символы можно набрать.Самое приятное в этой системе - то, что вы можете разрешить входы, которые соответствуют регулярным выражениям, и записывать входы, которые не соответствуют.Вы можете просмотреть журнал заблокированных входов и посмотреть, нужно ли вам настроить регулярные выражения, чтобы допустимые символы или блокировать пользователей пытались обойти ваши меры безопасности.