ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
针对XSS跨站攻击,一般有两种方法避免 1. 对用户提交的数据进行过滤 2. 对显示数据进行特殊处理,一般用htmlspecialchars()实体化处理 而HTMLPurifier就是第一种方法,其实就类似于白名单机制,不在白名单的内容会被过滤掉 HTML Purifier是一个HTML过滤器,它将获取任意的HTML代码段,并对其进行严格的测试,验证和过滤,以确保可以安全地输出到网页上。它通过以下方式实现此目的: 1. 分析(解析为符号)文档, 2. 对符号执行各种策略: 1. 删除不在白名单中的所有元素, 2. 使符号格式正确, 3. 修复节点的嵌套 4. 验证节点的属性 3. 使用净化后的符号生成HTML。 [HTMLPurifier类文件属性方法说明](http://htmlpurifier.org/doxygen/html/index.html) 但是,大多数用户只需要与[HTMLPurifier](http://htmlpurifier.org/doxygen/html/classHTMLPurifier.html "协调HTML Purifier的子系统以净化HTML的外观。")和[HTMLPurifier\_Config](http://htmlpurifier.org/doxygen/html/classHTMLPurifier__Config.html "触发可自定义行为的配置对象。")交互即可。 ### %HTML.Allowed是什么意思? 是HTML Purifier的配置指令的简写形式。它采用%Namespace.Directive的形式。出于实际目的,%HTML.Allowed转换为以下PHP代码: ~~~ $config->set('HTML', 'Allowed', $value); ~~~ ### 我不能在`a`标签中使用`target`和`name`属性! [%Attr.AllowedFrameTargets](http://htmlpurifier.org/live/configdoc/plain.html#Attr.AllowedFrameTargets)