为什么呈现用户生成的HTML或Javascript很危险?

为什么呈现用户生成的HTML或Javascript很危险?,javascript,html,security,sandbox,jinja2,Javascript,Html,Security,Sandbox,Jinja2,我不知道这是否真的很危险,但是,正如谷歌通过谷歌应用程序脚本提供的HTML和Javascript所做的那样(正如所解释的,他们使用“清理和沙箱HTML”) 我想知道如果我让用户使用Jinja2模板编辑HTML,允许他们访问一些稍后呈现的服务器端变量,是否会发生什么不好的事情。会发生什么坏事 Obs:我不在乎用户的HTML是否难看或是否会破坏页面的其余部分。HTML可能会发生不好的事情;最糟糕的事情可能发生在大多数模板引擎上,包括Jinja2。类似于任意代码执行。这就是为什么有一个允许最终用户编辑

我不知道这是否真的很危险,但是,正如谷歌通过谷歌应用程序脚本提供的HTML和Javascript所做的那样(正如所解释的,他们使用“清理和沙箱HTML”)

我想知道如果我让用户使用Jinja2模板编辑HTML,允许他们访问一些稍后呈现的服务器端变量,是否会发生什么不好的事情。会发生什么坏事


Obs:我不在乎用户的HTML是否难看或是否会破坏页面的其余部分。

HTML可能会发生不好的事情;最糟糕的事情可能发生在大多数模板引擎上,包括Jinja2。类似于任意代码执行。这就是为什么有一个允许最终用户编辑HTML或JavaScript的


如果用户查看其他用户创建的内容,他们的脚本可能会通过将值发送到攻击者的服务器来破坏cookie值或用户会话。

如果您的站点没有向用户提供有用的信息,没有从用户收集任何信息,具有可靠的服务器端代码(即没有SQL注入)而且域名显然很糟糕,真的没什么问题……:)怎么用?我看不出哪里可以用HTML执行任意代码。它只是一个字符串。这样使用Jinja2安全吗?他们的沙箱使我的服务器在呈现用户提交的模板时不受攻击?@GiovanniP:静态HTML不能执行服务器端代码,但Jinja2不仅仅是HTML…我从未使用过那个沙箱,但如果他们这么说的话。谢谢。您知道如何防止这种情况吗?最好在cookie()上使用
HttpOnly
标志,但如果您允许用户在系统上编辑HTML/脚本,则需要评估页面中是否存在cookie值之外的任何风险或敏感信息。您可以通过只允许特定子域包含已编辑的HTML/script(例如foo.example.com)来降低风险,因此由于同源策略,这些脚本将无法访问您的主www.example.com域上的任何信息。