Задать вопрос
sorry_i_noob
@sorry_i_noob

Как узнать, опасная строка (содержит XSS) или нет?

Здравствуйте. Как мне узнать, опасная строка или нет? Я пробовал обрабатывать строку HTMLPurifier'ом и потом сравнивать ее длину с необработанной строкой. Если длина разная, значит, HTMLPurifier удалил опасные элементы у этой строки (теги, атрибуты). Значит, строка была опасная.
Но это не работает. Потому что в HTMLPurifier встроен Tidy. И отключить его нельзя. И он меняет строку - добавляет к <br> слэши, меняет атрибут style - добавляет точку с запятой, убирает пробел. Приведу пример.
Было:
<div style="color: red">это div</div>
Стало:
<div style="color:red;">это div</div>
Где-то еще что-то меняет. И все это отследить практически нереально.
Так как же можно проверить - опасная строка или нет?
  • Вопрос задан
  • 180 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 2
alex-1917
@alex-1917
Если ответ помог, отметь решением
Ответ написан
Комментировать
webinar
@webinar Куратор тега PHP
Учим yii: https://youtu.be/-WRMlGHLgRg
Если длина разная, значит, HTMLPurifier удалил опасные элементы у этой строки (теги, атрибуты). Значит, строка была опасная.

Нет, это значит, что он удалил то, что Вы его попросили удалить. Возможно теги какие-то, возможно еще что-то. В Вашем случае он еще и автозамену делает.

На самом деле сложно отследить однозначно вредоносную строку. В примитивном варианте можно проверять на наличие тега <script>, но вариантов XSS много и обычно ставится задача избегать их, а не выявлять однозначно. Такая задача ближе к реальности. Так как ряд методов успешно предотвращают, но не выявляют.
Вот чтиво: https://habr.com/company/pentestit/blog/211494/
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы