加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP函数用于剥离标记,但列入白名单的标记和属性除外

发布时间:2020-12-13 22:00:56 所属栏目:PHP教程 来源:网络整理
导读:我必须从用户输入中删除所有 HTML标记和属性,除了那些被认为是“安全”的(即白名单方法). strip_tags()除了$allowable_tags参数中列出的标记之外的所有标记.但我还需要能够剥离所有未列入白名单的属性;例如,我想允许 b标记,但我不想允许onclick属性显而易见
我必须从用户输入中删除所有 HTML标记和属性,除了那些被认为是“安全”的(即白名单方法).

strip_tags()除了$allowable_tags参数中列出的标记之外的所有标记.但我还需要能够剥离所有未列入白名单的属性;例如,我想允许< b>标记,但我不想允许onclick属性显而易见的原因.

有没有这样做的功能,还是我必须自己制作?

解决方法

据我所知,strip_tags解决方案是摆脱不需要的标签的最快方法,并禁止第三方包,在DOMDocument中检查允许的属性会很容易,

$string = strip_tags($string,'<b>');
$dom = new DOMDocument();
$dom->loadHTML($string);
$allowed_attributes = array('id');
foreach($dom->getElementsByTagName('*') as $node){
    for($i = $node->attributes->length -1; $i >= 0; $i--){
        $attribute = $node->attributes->item($i);
        if(!in_array($attribute->name,$allowed_attributes)) $node->removeAttributeNode($attribute);
    }
}
var_dump($dom->saveHTML());

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读