django 在 json 中转义为 html

Posted

技术标签:

【中文标题】django 在 json 中转义为 html【英文标题】:django escaping for html in json 【发布时间】:2011-05-06 00:21:19 【问题描述】:

我正在浏览我的 django 网站寻找 xss 问题。我想我已经覆盖了它,因为 django 会自动转义。所以我把通常的 alert('foo');在示例数据中,我发现了一个巨大的漏洞,我使用 ajax 将数据下拉为 json 并使用 jquery.append 添加它,这些都没有被 html 转义,哎呀。

所以我的问题是解决这个问题的最佳方法是什么:

使用我自己的基于参数自动转义的 simplejson 副本。 只要确保在创建将被 json 转储的 dicts 时始终使用 escape() 始终在客户端使用 .text 我没想到的事情

这似乎是一个很容易让自己陷入的问题。

【问题讨论】:

【参考方案1】:

做一些明显/透明/自动的事情,就像 Joel 建议的那样:http://www.joelonsoftware.com/articles/Wrong.html

不过,我不明白 "alert('foo');" 是怎么回事注入 HTML 时可能有害。如果它被“”标签包围,那将是有害的。

对于转义 HTML,您必须确定是要在输入还是输出上执行此操作。根据您想要实现的目标(例如,允许 HTML 标记的子集)并考虑性能问题,您可能希望转义输入并将转义的 HTML 存储到数据库中。

【讨论】:

感谢您的回复。我的意思是放 。哎呀。我绝对不想在存储标签时删除它们,在很多情况下 或 " 是有效输入并且需要在 html 中输出。不过好主意。

以上是关于django 在 json 中转义为 html的主要内容,如果未能解决你的问题,请参考以下文章

解决python中转化成json的方法不能序列化datetime类型数据(转)

如何在 django 中转义 ^

如何在 django 标签中转义双引号?

如何在 django url 中转义“/”

如何在Django excel导出文件中转置行和列

杰克逊没有在 JSON 中转义引号