理想情况下,我希望允许用户像 tumblr 那样编辑 HTML,您可以在浏览器中编辑主题 HTML。您还可以完全控制。我听说过诸如 html-purifier 之类的工具。
除了“净化” HTML 之外,还应该采取哪些其他步骤。
理想情况下,我希望允许用户像 tumblr 那样编辑 HTML,您可以在浏览器中编辑主题 HTML。您还可以完全控制。我听说过诸如 html-purifier 之类的工具。
除了“净化” HTML 之外,还应该采取哪些其他步骤。
几天前,我问了一个类似的问题,可能会对您有所帮助。
我会将所有用户生成的 HTML 存储在另一个域/子域中,以避免 cookie 被盗,并使您的 cookie 为 HttpOnly,这样它们就不能被 JavaScript 访问。您只能在没有子域的情况下在主域上设置 cookie(用于身份验证等)。此外,您可以使用 CSRF 令牌来避免自动滥用。
如果您想禁止有害代码/JavaScript,您必须过滤您的 HTML,如果这样做,您应该将所有允许的标签列入白名单,而不是将禁止的标签列入黑名单(因为 HTML5 附带了新标签,甚至还有特定于浏览器的标签) .
另一个挑战是过滤属性(事件属性如 onclick 允许执行 JavaScript)。
另一位用户也提醒我注意内容安全策略,它是一个标头(但不幸的是只有少数浏览器支持)。
但这取决于您想给用户多少自由。