Я пытаюсь создать функцию, которая будет удалять любые РоКо тег сценария, но не другие теги, как р, Li, оле, пролет, h1, ...Проверьте, если строка содержит JS в PHP
Это что я до сих пор. Я также написал < и> как закодированные символы «% 3C» и «% 3E» и как имя и номер HTML. Пытался делать регулярное выражение для первого, как вы видите "^ < (/)? Script> $". Но это не работает: D
function smartFilter($string) {
$string = strtolower($string);
if (strpos($string, "<script>") !== FALSE || strpos($string, "<script>") !== FALSE || strpos($string, "<script>") !== FALSE || strpos($string, "%3Cscript%3E") !== FALSE) {
$unallowed = array("^<(\/)?script>$", "<script>", "</script>", "%3Cscript%3E", "%3C/script%3E", "<script>", "<script>");
return preg_replace($unallowed, "", $string);
} else {
return $string;
}
}
В своей основе вы должны использовать 'strip_tags()', но если вы хотите, чтобы это действительно защищенным, вы, вероятно, следует искать 3 библиотеки партии, которая делает это еще лучше. – developerwjk
Насколько я знаю, strip_tags удаляет все теги. Но я не хочу этого, потому что у меня есть богатый редактор текстовых полей, и пользователь может вводить заголовки и прочее, но я не хочу, чтобы они вставляли JS-коды. – IEMSlovenia
Вы читали документы? Вы можете указать допустимые теги в функции. – developerwjk