允许没有属性的HTML - 安全吗?

时间:2016-08-22 15:11:08

标签: php xss

此函数保留html元素但删除属性。

代码:

function clean( $html, $allowable_tags ) {
    $dom = new DOMDocument;
    $dom->loadHTML( strip_tags( $html, $allowable_tags ), LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD );
    $xpath = new DOMXPath( $dom );
    $nodes = $xpath->query( '//@*' );
    foreach ( $nodes as $node ) {
        $node->parentNode->removeAttribute( $node->nodeName );
    }
    return $dom->saveHTML();
}

示例:

clean( "<u onclick='alert()'>test</u>", "<u>" );

输出:

<u>test</u>

问题:

这样做时我可以期待什么类型的攻击?我测试了很多不同的东西,看起来足够安全,但也许有些东西我没有考虑到有人能做到。

0 个答案:

没有答案