RegEx: белый список HTML - PullRequest
       6

RegEx: белый список HTML

1 голос
/ 05 февраля 2009

Будучи слабым в регулярных выражениях, я работал с ними над улучшением. Одна концепция, которую я пытался сделать, - это удалить все элементы HTML, кроме списка разрешенных.

Мне удалось сделать обратное - удалить указанный список элементов:

<\/?(strong|em|a)[^>]*>

Тем не менее, я хочу наоборот, и удалить все элементы, кроме.

Ответы [ 4 ]

5 голосов
/ 05 февраля 2009

Не используйте регулярные выражения для анализа [X] HTML.

Вдвойне особенно определенно НИКОГДА не используйте регулярные выражения для анализа [X] HTML в качестве меры безопасности.

Анализатор HTML (или tidier, за которым следует синтаксический анализатор XML) - это единственный работоспособный подход для внесения в белый список.

/ <(. | \ N) *?> / G соответствует всем парам тегов HTML, включая атрибуты в тегах

Количество

<a href=">" onmouseover="attackCode()">

и тысячи других возможностей, как действительных, так и неправильных, но браузер все равно поймет.

4 голосов
/ 05 февраля 2009
0 голосов
/ 05 февраля 2009
/<(.|\n)*?>/g

соответствует всем парам тегов HTML, включая атрибуты в тегах

Исключить тэги сильные и эм

(?!strong|em)

соответствует всем парам HTML-тегов, кроме сильных и em

<((?!strong|em).|\n)*?>
0 голосов
/ 05 февраля 2009

Предполагая PCRE, используйте (?! elements ) вместо ( elements ).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...