PHP экранирование js кода в тексте HTML

Например с чужого сервера приходит нам html - нужно его экранировать от js кода, чтобы потом вставить в таком же виде на сайт. Как это правильно сделать на php? Есть ли встроенная функция? Помимо тегов <scrip></script> в HTML элемент может быть встроен тег onload="", onerror="", что еще может послужить xss атаке, как это экранировать?


Ответы (1 шт):

Автор решения: Роман Морозов

Тут надо от обратного идти. Надо создать свой whitelist тегов и атрибутов, всё лишнее удалять.

В разных CMS видел разные реализации, у всех свои.

https://github.com/AlexanderGrom/php-qevix тут что-то похожее есть. Указываете теги и атрибуты, которые точно безопасны и не беспокойтесь.

Если держать список опасных тегов и атрибутов, то есть шанс что-то забыть и это будет фатальная ошибка. Могут появиться новые теги и атрибуты опасные.

А в случае с whitelist, всё безопасно. Если какие-то теги безопасные сразу не добавили, их можно всегда добавить без ущерба.

→ Ссылка