защитить от XSS (идеальная функция)? - PullRequest
0 голосов
/ 13 марта 2012
function xap ($in, $format=false) {
   if ($format == 'html') {
      //Делаем безопасный html
   $in = preg_replace('/(<(link|script|iframe|object|applet|embed).*?>[^<]*(<\/(link|script|iframe|object|applet|embed).*?>)?)/i', '', $in); //Удаляем стили, скрипты, фреймы и flash
  $in = preg_replace('/(script:)|(expression\()/i', '\\1&nbsp;', $in); //Обезвреживаем скрипты, что остались
  $in = preg_replace('/(onblur|onchange|onclick|ondblclick|onfocus|onkeydown|onkeypress|onkeyup|onload|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|onreset|onselect|onsubmit|onunload)=?/i', '', $in);
  $in = preg_replace('/((src|href).*?=.*?)(http:\/\/)/i', '\\1redirect/\\2', $in); 
  return $in;
} else {
  return htmlentities($in);
    }
}
echo xap($text); //for read
echo xap($text, "html"); //for read html tags

Автор говорит, что это идеальный код для защиты от XSS ... это правда?

Ответы [ 3 ]

0 голосов
/ 13 марта 2012
htmlspecialchars($str, ENT_QUOTES, 'UTF-8');

Должно быть достаточно безопасно

http://php.net/manual/en/function.htmlspecialchars.php

0 голосов
/ 23 мая 2013

Вы забыли ошибку. => <img src="http://idontexists.neke/notexists.jpg" onerror="alert(document.cookie)" />

0 голосов
/ 13 марта 2012

htmlentities() защитит вас от XSS.

Ваш код выглядит так, как будто вы также хотите разрешить некоторый HTML-код.Вы все равно должны запустить htmlentities() и после этого запустить str_replace(), чтобы разрешить некоторые html-теги, которые вам нужны.

...