【发布时间】:2014-05-04 11:02:43
【问题描述】:
我正在使用 HTML5 和 Javascript 构建所见即所得的编辑器。 我将允许用户通过 WYSIWYG 发布纯 HTML,因此必须对其进行清理。
保护网站免受跨站脚本 (XSS) 攻击等基本任务即将到来,因为没有最新的 PHP 净化和过滤软件。
HTML Purifier 目前不支持 HTML5,整体状况看起来很糟糕(不会很快支持 HTML5)。
那么我应该如何使用 PHP(后端)清理不受信任的 HTML5 呢?
目前的选项...
- HTML Purifier(缺少新的 HTML5 标签、数据属性等)
- 使用 strip_tags() 和 Tidy 或 PHP 的 DOM 类/函数实现自己的净化器
- 使用一些“随机”的 Tidy 实现,例如 http://eksith.wordpress.com/2013/11/23/whitelist-html-sanitizing-with-php/
- Google Caja(Javascript/云)
- htmLawed(HTML5 支持测试版)
还有其他选择吗? PHP 会死吗? ;)
【问题讨论】:
-
您可以防止使用 csrf 令牌进行跨站点脚本。任何体面的框架都将提供一个简单的实现。如果你选择做一名牛仔并自己动手,那是可行的,但请不要抱怨 php 死了。
-
我已经有了 CSRF 保护,但是保护还不够。用户仍然可以在没有适当清理的情况下发布(注入)JS 事件、CSS 样式等。允许的 HTML5 标记和属性必须有白名单。 PHP 正在死亡的部分是一个(坏的?)笑话。
-
发布 CSS 样式?儿子,你说的太不合理了。
-
或
-
@pguardiario — CSRF 和 XSS 是完全不同类型的攻击(虽然 CSRF 保护通常会击败反射型 XSS 攻击,但它对存储型 XSS 攻击没有多大帮助)
标签: php html xss wysiwyg sanitize