我希望允许用户创建微小的模板,然后我使用预定义的上下文在 Django 中呈现这些模板。我假设 Django 渲染是安全的(我问了一个关于这个的问题before),但仍然存在跨站点脚本的风险,我想防止这种情况发生。这些模板的主要要求之一是用户应该对页面的布局有一定的控制,而不仅仅是其语义。我看到了几个解决方案:
- 允许用户使用 HTML,但在最后一步手动过滤掉危险标签(例如
<script>
and <a onclick='..'>
。我对这个选项不太热衷,因为我担心我可能会忽略一些标签。即使这样,用户仍然可以使用绝对定位<divs>
弄乱页面其余部分的一两件事。
- Use a 标记语言生成安全的 HTML。据我所知,在大多数标记语言中,我可以剥离任何 html,然后处理结果。问题是大多数标记语言在布局方面都不是很强大。据我所知,Markdown 中没有办法将元素居中,甚至在 ReST 中也是如此。这里的优点是一些标记语言有详细的文档记录,用户可能已经知道如何使用它们。
- 提出一些专有标记。我在这里看到的缺点几乎都是这个词所暗示的所有权.
所以,总结一下:是否有一些安全且简单的方法来“净化”HTML——防止 xss——or是否有一种相当普遍的标记语言可以对布局和样式进行一定的控制。
资源:
- 我之前关于 Django 模板的问题
- Markdown 中的类名。
看到 Pekka 的回答,我尝试快速用 Google 搜索 Python 中的 HTML Purifier 等效项。这是我想出的:Python HTML 清理器。乍一看,我觉得还不错。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)