当前位置: 首页 > 面试题库 >

在脚本标签中嵌入JSON对象

井昊乾
2023-03-14
问题内容

编辑:为了将来参考,我正在使用非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={&quot;foo&quot;: &quot;&lt;/script&gt;&quot;};</script>

并且浏览器无法解释该<script>标签。

我在这里的问题是,

  1. 在这种情况下,我应该逃避/逃避哪些字符?
  2. 有没有自动的方法可以在Python / Django中执行此操作?

问题答案:

如果使用的是XHTML,你将能够使用实体引用(&lt;&gt;&amp;),以逃避你想要的任何字符串<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-->--\>



 类似资料:
  • 问题内容: 有谁知道将图标嵌入Python脚本的方法,这样当我创建独立的可执行文件(使用pyinstaller)时,不需要包含.ico文件吗?我知道使用py2exe可以实现,但是就我而言,我必须使用Pyinstaller,因为使用前者并不成功。我正在使用Tkinter。 我知道,但是如果我想使一个文件可执行,那是行不通的。 问题答案: 实际上,函数iconbitmap只能接收文件名作为参数,因此那

  • 问题内容: 我有外部API数据,这是用户生成的内容。客户希望使用此提要动态更新自己的站点,包括使用JavaScript的能力。 将显示任何HTML或CSS但不适用于JavaScript的内容: 我已经尝试过包括以及使用。 没有骰子。 问题答案: 您必须包括jQuery才能正常工作。 plunkr示例:http ://plnkr.co/edit/zEXXCB459Tp25VJiyyZb?p=prev

  • 问题内容: 我有一个动态生成的页面,我想在其中使用静态JavaScript,并向其传递JSON字符串作为参数。我已经看到Google使用了这种方法。 但是,我应该如何从JavaScript中读取JSON字符串? 在此JavaScript中,我想使用HTML文档中的JSON参数。我不知道是否最好使用jQuery。 问题答案: 我将脚本声明更改为: 注释类型和ID字段。之后 在所有浏览器中都可以正常工

  • 本文向大家介绍Lua教程(一):在C++中嵌入Lua脚本,包括了Lua教程(一):在C++中嵌入Lua脚本的使用技巧和注意事项,需要的朋友参考一下 本系列教程主要介绍如何在C/C++程序里面嵌入Lua脚本,我打算从以下几个方面来介绍: 1.如何在C/C++里面嵌入Lua脚本 2.Lua访问C/C++数据结构(这里面要介绍类,结构体,函数,变量,枚举等数据类型在lua里面如何访问) 3.C/C++访

  • 问题内容: 我遇到一个问题,其中在JavaScript中用引号引起来的字符串中包含结束脚本标记,这正在终止该脚本。我认为这不是预期的行为。 我感兴趣的测试用例浏览器:Mozilla / 5.0(X11; U; Linux i686; en-US; rv:1.9.1.4)Gecko / 20091028 Ubuntu / 9.10(karmic)Firefox / 3.5.4。 问题答案: 怎么了?

  • 我试图得到一些代码语法高亮我写的一些文档,我使用HAML和Highlight.js这将适用于像这样的单行Ruby代码(虽然高亮不是很好): 但是如果我尝试在< code>pre和< code>code标记中编写一些CSS,就像这样: 我得到“非法嵌套:纯文本嵌套是非法的。”错误,由于CSS末尾的括号。 有人知道使用HAML在网页上编写代码示例(主要是SASS、Ruby、HAML、Coffeescr