gpt4 book ai didi

javascript - 为什么 eval() 不适用于 JSON.parse() 的输出?

转载 作者:行者123 更新时间:2023-12-02 16:10:18 25 4
gpt4 key购买 nike

我想展示一些 JavaScript。为此,我使用 php file_get_contents() 读取 .js 文件的内容,然后使用 json_encode() 并回显结果,然后在前端通过 $.get() 读取结果,然后执行 JSON.parse()在结果上(我尝试过不解析它),但 eval() 仍然对结果不起作用。

奇怪的是,如果我复制 json_encode() 的结果并将其粘贴到 js 变量中,那么 eval() 就会起作用!

我做错了什么?

服务器端:

$name=$_GET['name'];
$t= file_get_contents('../graphics/'.$name);
$t= json_encode($t);
echo $t;

客户端:

$.get("php_lib/readGraph.php",{ name:name}, function(data, status){
if(status){
eval(JSON.parse(data));
}
else {
alert('Ajax error');
}
});

最佳答案

无需将代码编码为 json。您不是传递变量等格式化数据,而是输出完整的 JavaScript 代码。我会尝试简单地删除 json 部分。

希望您粘贴的 PHP 只是一个示例,并且在允许人们从您的服务器输出文件之前您正在进行认真的验证。在代码中指定路径还远远不够,因为只需在输入中添加 .. 就可以轻松规避这一点。然后,黑客可以输出您的网络服务器正在运行的用户具有读取访问权限的所有内容。即使在您的网络根目录之外。顺便说一句,输出文件的更有效方法是使用 readfile() .

关于javascript - 为什么 eval() 不适用于 JSON.parse() 的输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30280610/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com