在脚本标签中嵌入JSON对象
编辑:为了将来参考,我正在使用非xhtml内容类型定义 <!html>
我正在使用Django创建网站,并且试图在页面中嵌入任意json数据,以供客户端JavaScript代码使用。
假设我的json对象是{"foo": "</script>"}
。如果直接将其嵌入,
<script type='text/javascript'>JSON={"foo": "</script>"};</script>
第一个关闭json对象。(此外,由于该json对象将动态生成,这将使站点容易受到XSS的攻击)。
如果我使用django的HTML转义功能,则输出为:
<script type='text/javascript'>JSON={"foo": "</script>"};</script>
并且浏览器无法解释该<script>
标签。
我在这里的问题是,
- 在这种情况下,我应该逃避/逃避哪些字符?
- 有自动的方法可以在Python / Django中执行此操作吗?
回答:
如果使用的是XHTML,你将能够使用实体引用(<,>,&
),以逃避你想要的任何字符串<script>
。你不希望使用一个<![CDATA[...]]>
节,因为]]>
不能在CDATA节中表示序列“ ”,并且你必须将脚本更改为express ]]>
。
但是你可能没有使用XHTML。如果你使用的是常规HTML,则该<script>
标记的行为有点像XML中的CDATA部分,除了它有更多陷阱之外。它以结尾</script>
。也有奥秘的规则允许<!-- document.write("<script>...</script>") -->
(注释和<script>
开始标记都必须同时存在</script>
才能通过)。HTML 5标记化和CDATA Escapes描述了HTML5编辑器为将来的浏览器采用的折衷方案
我认为外卖是,你必须避免</script>
在你的JSON发生,并且是安全的,你也应该避免<script>
,<!--以及-->
防止失控意见或脚本标记。我认为这是最简单的办法,以取代<与\u003c
和-->
与--\>
以上是 在脚本标签中嵌入JSON对象 的全部内容, 来源链接: utcz.com/qa/414200.html