Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.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
Javascript 将eval()转换为JSON.parse_Javascript_Json_Eval_Xss_Code Injection - Fatal编程技术网

Javascript 将eval()转换为JSON.parse

Javascript 将eval()转换为JSON.parse,javascript,json,eval,xss,code-injection,Javascript,Json,Eval,Xss,Code Injection,对于基于XSS的攻击,我正在经历使用eval()的不良影响。我需要一段代码来防止可能的XSS攻击,我想JSON.parse()应该可以正常工作 var request = new XMLHttpRequest(); var url = encDataPath + "/jcr:content/metadata.json?_charset_=utf-8"; url = Granite.HTTP.externalize(url); request.open("GET", url ,false); r

对于基于XSS的攻击,我正在经历使用eval()的不良影响。我需要一段代码来防止可能的XSS攻击,我想JSON.parse()应该可以正常工作

var request = new XMLHttpRequest(); 
var url = encDataPath + "/jcr:content/metadata.json?_charset_=utf-8";
url = Granite.HTTP.externalize(url);
request.open("GET", url ,false);
request.send(null);

var jsonData =eval("(" + request.responseText + ")"); // <-- here
var assetTitle = jsonData["dc:title"];
var mimetype = jsonData["dc:format"];
var-request=new-XMLHttpRequest();
var url=encDataPath+“/jcr:content/metadata.json?\u charset\u=utf-8”;
url=Granite.HTTP.externalize(url);
打开(“获取”,url,false);
请求发送(空);

var jsonData=eval(“+request.responseText+”);// 只需将该行替换为:

var jsonData = JSON.parse(request.responseText);
var jsonData = JSON.parse(request.responseText);

如果响应是正确的JSON,这应该可以正常工作。

只需将该行替换为:

var jsonData = JSON.parse(request.responseText);
var jsonData = JSON.parse(request.responseText);

如果响应是正确的JSON,这应该可以正常工作。

假设响应是行为良好的JSON,您可以简单地将eval行替换为:

var jsonData = JSON.parse(request.responseText);
var jsonData = JSON.parse(request.responseText);
不过要小心:与eval接受的Javascript对象相比,JSON解析器在接受的值方面非常严格。比如说,

var jsVal = eval("({a:3})");
将导致对象{a:3},而

var jsonVal = JSON.parse("{a:3}");
将导致分析错误,因为JSON规范[0]要求对象键作为双引号字符串提供:

var jsonVal = JSON.parse('{"a":3}');
如果服务器配置正确,它通常会输出兼容的JSON,但这是需要注意的


[0]

假设响应是行为良好的JSON,您只需将eval行替换为:

var jsonData = JSON.parse(request.responseText);
var jsonData = JSON.parse(request.responseText);
不过要小心:与eval接受的Javascript对象相比,JSON解析器在接受的值方面非常严格。比如说,

var jsVal = eval("({a:3})");
将导致对象{a:3},而

var jsonVal = JSON.parse("{a:3}");
将导致分析错误,因为JSON规范[0]要求对象键作为双引号字符串提供:

var jsonVal = JSON.parse('{"a":3}');
如果服务器配置正确,它通常会输出兼容的JSON,但这是需要注意的


[0]

这个问题似乎可以自己回答…?我不明白为什么你会问如何用一件东西替换另一件东西,而这似乎太明显了,答案如下。为什么要在[xss]和[code injection]下标记它?这个问题似乎可以自己回答…?我不明白为什么你会问如何用一件东西来代替另一件东西,而这件事情似乎太明显了,答案如下。为什么要在[xss]和[code injection]下标记它?查看url:
/jcr:content/metadata.json
。我认为这是一个非常安全的赌注,响应是有效的JSON。请查看url:
/jcr:content/metadata.JSON
。我认为这是一个相当安全的赌注,响应是有效的。