我想接受来自用户的 html 输入并将其发布在我的网站上,还想确保它不会由于脏 html 代码而对我的网站模板造成问题。
我过去使用过 html 净化器,但 Html 净化器在我的一台服务器上不起作用。所以我正在寻找最佳选择。这纯粹是用php编写的。它可以修复脏的 html 代码,例如
</div> it is dirty code as div is closed without opening.
Run Code Online (Sandbox Code Playgroud)
没有第三方库的简单解决方案:创建一个DOMDocument并loadHTML使用您的输入调用它。如果您只是解析一个小片段,则用<html>和<body>标签包围输入。您可能也想抑制警告,因为您会因为常见的错误 HTML 将它们吐出来。
然后只需遍历生成的文档树,删除未包含在已知良好列表中的任何元素和属性。您还应该检查允许的 URL 属性以确保它们使用已知良好的方案http:,而不是像javascript:. 如果您想加倍努力,您可以检查是否只有允许的元素组合相互嵌套(您允许的元素数量越少,这就越容易)。
最后,再次使用saveHTML. 因为您是从 DOM 创建新标记,而不是维护原始的(可能格式错误的)标记,所以这是您正在阻止的一整类奇数标记注入技术。
| 归档时间: |
|
| 查看次数: |
3033 次 |
| 最近记录: |