Проверьте, содержит ли строка JS в переполнении стека

Я пытаюсь создать функцию, которая удаляла бы любые потенциальные теги сценария, но не другие теги, такие как p, li, ol, span, h1, …

Это то, что я до сих пор. Я тоже написала < и> как закодированные символы «% 3C» и «% 3E» и как имя и номер HTML. Пытался сделать регулярное выражение для первого, как вы видите «^<(/)? script> $ «. Но это не работает: D

function smartFilter($string) {
$string = strtolower($string);
if (strpos($string, "<script>") !== FALSE || strpos($string, "&#60;script&#62;") !== FALSE || strpos($string, "&lt;script&gt;") !== FALSE || strpos($string, "%3Cscript%3E") !== FALSE) {
$unallowed = array("^<(\/)?script>$", "&lt;script&gt;", "&lt;/script&gt;", "%3Cscript%3E", "%3C/script%3E", "&#60;script&#62;", "&#60;script&#62;");
return preg_replace($unallowed, "", $string);
} else {
return $string;
}
}

-1

Решение

Почему бы не использовать strip_tags с php? Ссылка на сайт Вот.

0

Другие решения

Это сделал всю работу, которую я просил: D

function smartFilter($string) {
return strip_tags($string, "<p><li><ol><ul><h1><h2><h3><h4><h5><span><b><u><i>");
}
0