Php html安全显示html

Php html安全显示html,php,xhtml,html-entities,Php,Xhtml,Html Entities,我有来自rss提要的数据。我想安全地使用htmlentities,但如果我使用它,如果有html代码在那里,页面上充满了代码和内容。我不介意rss提供的格式,只要我能安全地显示它,我很乐意使用它。我关注提要的内容,但也希望它的格式合理(如果有一个中断标记、段落或div),有人知道方法吗?您想防止提要中的XSS吗?如果是这样,在显示HTML之前,您需要在HTML上运行HTML消毒剂: 如果您只想逃避存在的任何内容,只需对其调用htmlspecialchars()。但是任何HTML都将显示为转义

我有来自rss提要的数据。我想安全地使用htmlentities,但如果我使用它,如果有html代码在那里,页面上充满了代码和内容。我不介意rss提供的格式,只要我能安全地显示它,我很乐意使用它。我关注提要的内容,但也希望它的格式合理(如果有一个中断标记、段落或div),有人知道方法吗?

您想防止提要中的XSS吗?如果是这样,在显示HTML之前,您需要在HTML上运行HTML消毒剂:

  • 如果您只想逃避存在的任何内容,只需对其调用
    htmlspecialchars()
    。但是任何HTML都将显示为转义文本…

    您可以使用tags函数并在其中指定允许的标记:

    echo strip_tags($content, '<p><a>');
    
    echo strip_标签($content,);
    

    这样,任何未在允许的标记中指定的标记都将被删除。

    您可以转换,然后使用各种库再次备份

    你的问题到底是什么?我能保留html标签,但避免任何不好的东西吗?我知道这是一个不好的标记…不确定其他人。这不会带走其他不好的东西,如javascript事件或其他潜在的危险属性…所以如果我没有任何允许的标记,那么它仍然是不安全的?难道你不需要一个标签来定义javascript吗?难道你不需要一个标签来移除javascript标签吗?你说的危险属性是什么意思?我现在有这个…htmlentities(strip_tags($description))。这不安全吗?@keith:它将删除所有标记,甚至脚本标记,但当您允许某些标记时,这些标记仍将保持不变。因此,您需要在第二个参数中指定您希望从rss获得的html中允许的内容。对于第二条注释,它应该是安全的,但是您没有任何html,只有纯文本,因此您可以指定允许的标记。