sorry_i_noob
@sorry_i_noob

Как правильно сделать валидацию сохраняемого в БД текста с тегами?

Здравствуйте! Пользователь написал текст. В нем, возможно, есть теги (они разрешены). Как мне сделать валидацию этого текста? Сложности заключаются вот в чем.

В тексте может быть XSS, могут быть незакрытые теги. Я обрабатываю текст с помощью HTMLpurifier. Я настроил его так, чтобы он удалял незакрытые теги. Пропускал разрешенные теги. А неразрешенные преобразовывал с помощью функции htmlentities. В итоге, длина текста меняется.
Допустим, по правилам можно писать текст, длина которого - минимум 10 символов и максимум - 15. Если пользователь введет вот такой текст (длина - 13 символов):
<b>Привет</b>
На выходе получится вот, что (длина - 25)
&lt;b&gt;Привет&lt;/b&gt;
Пользователю выводится сообщение, что текст должен быть короче 15 символов. Хотя пользователь ввел 13.
А если пользователь забудет закрыть тег. То у него не больше получится символов, а меньше. Хотя если посчитать (в том числе и через JS - там ведь нет htmlpurifier. посчитать и вывести на экран), то их хватает.
Получается какая-то игра "Сапер".

Как валидировать такой текст? Делать валидацию ДО обработки? Тогда, если текст длинный, то часть тегов может не поместиться в MySQL и обрежется. Обрезаться могут в том числе и разрешенные теги. Из-за чего текст станет с незакрытыми тегами. И верстка на странице поедет.
  • Вопрос задан
  • 42 просмотра
Пригласить эксперта
Ответы на вопрос 1
@Ambrosian
Если тег запрещен, то зачем вы его превращаете в &lt;b&gt;Hi!&lt;/b&gt;?
Удаляйте просто
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
01 мая 2024, в 11:20
5000 руб./за проект
01 мая 2024, в 10:55
3000 руб./за проект