Проверьте, содержит ли HTML JavaScript в PHP - PullRequest
4 голосов
/ 01 октября 2009

Мне нужно проверить, содержит ли пользовательский HTML-код JavaScript. Я использую PHP для проверки.

Ответы [ 5 ]

7 голосов
/ 01 октября 2009

Если вы хотите защитить себя от межсайтовых сценариев (XSS), то вам лучше использовать белый список , чем черный список . Поскольку есть слишком много аспектов, которые необходимо учитывать при поиске XSS-атак .

Просто составьте список всех тегов и атрибутов HTML, которые вы хотите разрешить, и удалите / удалите все остальные теги / атрибуты. А для тех атрибутов, которые можно использовать для атак XSS, проверьте значения, чтобы разрешить только безопасные значения.

4 голосов
/ 01 октября 2009

Может быть, лучше выбрать другой подход и использовать что-то вроде Очиститель HTML , чтобы отфильтровать все, что вам не нужно. Я думаю, что было бы очень трудно безопасно удалить любую возможность javascript без правильного синтаксического анализа HTML.

2 голосов
/ 01 октября 2009

ОК, давайте не будем все здесь наивными:

<script> "<!-- </script> -->"; document.write("hello world"); </script> (должен пройти фильтры, предложенные regexadvice)

Отфильтровывание javascript - это критически важный элемент безопасности, а это значит, что вы должны делать это тщательно и правильно, а не быстро взламывать.

0 голосов
/ 01 октября 2009

Вам нужно будет сканировать теги <script>, но вам также нужно будет сканировать такие атрибуты, как onclick="" или onmouseover="" и т. Д., Которые могут иметь javascript без использования тегов сценария.

0 голосов
/ 01 октября 2009

Вы можете удалить теги сценария как состояния Pawka, используя регулярные выражения. Я нашел тему по этому здесь .

В основном это:

$list=preg_replace('#<script[^>]*>.*?</script>#is','',$list);

Код с этой страницы, а не я.

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