Питер, я хотел бы познакомить вас с двумя понятиями в области безопасности:
Черный список - запретить то, что вы знаете, плохо.
Белый список - разрешить все, что вы знаете, хорошо.*
Хотя оба имеют свое применение, черный список по своей конструкции небезопасен.
То, что вы спрашиваете, фактически является черным списком.Если бы существовала альтернатива <script>
(например, <img src="bad" onerror="hack()"/>
), вы не сможете избежать этой проблемы.
Белый список, с другой стороны, позволяет вам указать точные условиявы разрешаете.
Например, у вас будут следующие правила:
- разрешать только эти теги: b, i, u, img
- разрешать только этиатрибуты: src, href, style
Это только теория.На практике вы должны соответствующим образом анализировать HTML, поэтому необходим правильный анализатор HTML.