允许用户编辑和存储HTML


Allowing users to edit and store HTML

理想情况下,我希望允许用户像tumblr那样编辑HTML,您可以在浏览器中编辑主题HTML。你也得到了完全的控制权。我听说过像html净化器这样的工具。

除了"净化"HTML之外,还应该采取哪些其他步骤。

几天前我问了一个类似的问题,可能会对你有所帮助。

我会将所有用户生成的HTML存储在另一个域/子域上,以避免cookie被盗,并使您的cookie为HttpOnly,这样就无法使用JavaScript访问它们。您可以在没有子域的主域上设置cookie(用于身份验证等)。此外,您可以使用CSRF令牌来避免自动滥用。

如果你想禁止有害的代码/JavaScript,你必须过滤你的HTML,如果你这样做了,你应该把所有允许的标签都列入白名单,而不是把禁止的标签列入黑名单(因为HTML5带来了新的标签,甚至还有特定于浏览器的标签)。

另一个挑战是过滤属性(像onclick这样允许执行JavaScript的事件属性)。

另一位用户也提醒我注意内容安全策略,它是一个标题(但不幸的是,只有少数浏览器支持)。

但这取决于你想给用户多大的自由度。