【问题标题】:The risk of allowing users to add post with raw html which will be purified using HTMLPurifier允许用户使用将使用 HTMLPurifier 净化的原始 html 添加帖子的风险
【发布时间】:2014-01-09 17:11:08
【问题描述】:

感谢检查

在我的社交网站中,我使用 Summernote 进行评论和发帖。然后我使用 htmlpurifier 来清理用户帖子。但我想允许用户从 hulkshare 添加音乐。由于summernote不支持它,我想通过将hulkshare的iframe代码粘贴到summernote的codeview中来允许用户这样做。

请 htmlpurifire 足够强大以保护我的网站免受用户的 XSS 攻击。

【问题讨论】:

  • 先明确什么是HTMLPurifier。这个问题是否与用户发布的 HTML 或允许用户发布 hulkshare sn-ps 有关?
  • HTMLPurifier 可以做到这一点,但是否足够安全取决于你编写的过滤规则。
  • 最好的解决方案是自己解析一段预定义的代码,然后渲染成你想要的样子。您将获得对用户输入和渲染的更多控制。

标签: php wysiwyg


【解决方案1】:

HTMLPurifier 在逻辑上会删除任何 iframe,因此它无法工作。为什么不为此创建一个新的 HTML 标签,专门针对您的网站。比如:

<yourwebsite-music source="hulkshare" id="1234"/>

然后您设置 HTMLpurifier 以保留此标签并使用 PHP 自己呈现它(通过将标签替换为 iframe)。这样做还可以让您稍后添加其他媒体源,并让您更好地控制用户帖子中发生的事情。

【讨论】:

  • 我已经有一个 iframe 工作。我用它来允许用户上传 youtube 视频。我使用 phpQuery 选择 iframe(每个帖子允许一个 iframe)保存在一个变量中,在剩余的 html 上运行净化器,从 Ifram 中剥离任何脚本并将其插入回 html。感谢您的建议。
  • 我会为 @Music-urlHere 或 {MUSIC,url} 等用户做自定义标签并在后端解析它
  • 这是一个不错的方法,但我使用的是 Summernote,所以它会将 @ 渲染为 html 代码。
【解决方案2】:

有许多 html 净化器库,您可以在其中指定禁止/允许的标签。我建议您查找它们并选择最适合您的情况。

【讨论】:

    猜你喜欢
    • 2012-01-03
    • 1970-01-01
    • 1970-01-01
    • 2015-05-07
    • 1970-01-01
    • 1970-01-01
    • 2010-11-25
    • 2013-01-10
    • 1970-01-01
    相关资源
    最近更新 更多