【发布时间】:2010-03-01 17:35:55
【问题描述】:
我希望允许用户创建微型模板,然后在 Django 中使用预定义的上下文进行渲染。我假设 Django 渲染是安全的(我问了一个关于这个before 的问题),但仍然存在跨站点脚本的风险,我想防止这种情况发生。这些模板的主要要求之一是用户应该对页面的布局有一些控制,而不仅仅是它的语义。我看到了几个解决方案:
- 允许用户使用 HTML,但在最后一步手动过滤掉危险标签(
<script>和<a onclick='..'>之类的东西。我对这个选项不太感兴趣,因为我担心我可能会忽略一些标签。即便如此,用户仍然可以在<divs>上使用绝对定位来搞乱页面其余部分的一两件事。 - 使用生成安全 HTML 的标记语言。据我所知,在大多数标记语言中,我可以剥离任何 html,然后处理结果。这样做的问题是大多数标记语言在布局方面不是很强大。据我所知,没有办法在 Markdown 中居中元素,即使在 ReST 中也是如此。这里的优点是一些标记语言有据可查,用户可能已经知道如何使用它们。
- 想出一些专有标记。我在这里看到的缺点几乎都被专有这个词所暗示。
所以,总结一下:是否有一些安全且简单的方法来“净化”HTML——防止 xss——或 是否有一种相当普遍的标记语言可以控制布局和样式。
资源:
【问题讨论】:
标签: python html security xss markup