-1
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 から保護するための理想的なコードだと言っていますが、本当ですか?

4

3 に答える 3

0
htmlspecialchars($str, ENT_QUOTES, 'UTF-8');

十分に安全なはずです

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

于 2012-03-13T12:52:14.963 に答える
0

htmlentities()XSSからあなたを守ります。

あなたのコードは、いくつかの HTML コードも許可したいようです。必要ないくつかの html タグを許可するためにhtmlentities()、この実行後も実行する必要があります。str_replace()

于 2012-03-13T11:35:07.033 に答える