Проблема с регулярными выражениями состоит в том, что фильтрация HTML является слишком сложной задачей, чтобы ее можно было легко или элегантно выполнить с регулярными выражениями без создания большого беспорядка.
Вам необходимо создать что-то, что действительно понимает HTML иможет работать с ним как с HTML и знать, как браузер собирается что-то интерпретировать.Регулярные выражения работают с ним, как будто это просто одна большая длинная строка.Они не очень хороши и не изящны при разборе HTML с сохранением состояния, например, распознавая, что текущее совпадение находится внутри комментария, или в атрибуте, или в элементе и т. Д. Просто эмулировать это в регулярных выражениях очень просто.
Другая проблема заключается в том, что «сопоставление общеизвестных инъекций XSS» намного сложнее, чем кажется.Если это не так, вы не делаете это правильно.Ваш фильтр должен знать HTML, он должен знать, какова действительная схема URL и как нулевые байты работают в разных частях HTML и т. Д. В основном, большинство инъекций в шпаргалке XSS, например, основаны на обходе фильтрациисделано с помощью регулярных выражений фильтров.
И еще одна вещь - то, что очиститель HTML поддерживается кем-то, кто знает, что они делают.Вы можете доверять этому, и вы можете верить, что если в нем есть новый недостаток, он будет исправлен.Это может сэкономить вам много работы, пытаясь сделать то же самое самостоятельно, и гарантировать, что вы будете в курсе всех различных патчей.