0

我打算用所见即所得的编辑器制作一个博客式的平台(虽然博客还不够多,值得一个 CMS/Wordpress 实例),以使管理员能够发布文章。我一直想知道在数据库中存储 HTML(用于文章文本)是否合理和/或安全(我总是可以清除所有脚本标签的痕迹),以及是否有更好的解决方案。

不要误会我的意思:我知道它有效,但我感到非常痒,必须有一个我不知道的更好的解决方案。

4

1 回答 1

2

当然。您可以将其存储在文件系统中,但随后您将失去数据库的优势(例如与其他内容进行单一备份,或级联删除)。

您需要在存储 HTML 之前对其进行清理,因为它可能包含 XSS。您不想意外地在管理界面中意外返回它。

在 Java 中,您可以使用 Hibernate Validator 的 @SafeHtml 注释 / JSoup 的库进行清理。

您还应该在输出之前在服务器上转义 HTML,这样浏览器中就不会运行不安全的 JavaScript。

还:

  • 使用仅 HTTP 会话 cookie(这样 XSS 攻击就无法使用它们)
  • X-XSS-保护=1;模式=阻止
  • X-Content-Security-Policy = default-src 'self'
  • 内容安全策略 = default-src 'self'
  • X-WebKit-CSP = default-src 'self'
  • 使用 X-Content-Type-Options = nosniff 标头(我认为)
于 2013-10-22T05:13:44.990 回答