php clear_xss2

function clear_xss2($val, $extratags=array()) {
      // version 2 of clear xss2 which allows to keep all valid html tags but removing dangerous html tags
      $doc = new DOMDocument();

      // load the HTML string we want to strip
      libxml_use_internal_errors(true);
      $doc->loadHTML($val);

      // remove comments
      $xpath = new DOMXPath($doc);
      foreach ($xpath->query('//comment()') as $comment) {
         $comment->parentNode->removeChild($comment);
      }

      $forbiddenTags = array('script','applet', 'iframe', 'frameset', 'frame','object','embed');
      if(!empty($extratags))
         $forbiddenTags = array_merge($forbiddenTags, $extratags);

      foreach($forbiddenTags as $tag) {
         while (($r = $doc->getElementsByTagName($tag)) && $r->length) {
            $r->item(0)->parentNode->removeChild($r->item(0));
         }
      }

      // we need to remove js on events on any tags
      $nodes = $doc->getElementsByTagName('*');
      for($c = 0; $c<$nodes->length; $c++){
         $node = $nodes->item($c);
         foreach($node->attributes as $k => $v){
            if( substr($k, 0, 2)=='on' ){
               $node->removeAttribute($k);
            }
         }
      }

      libxml_clear_errors();
      return $doc->saveHTML();
   }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值