最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

无法获取节点中已解码的base64数据的值

运维笔记admin6浏览0评论

无法获取节点中已解码的base64数据的值

无法获取节点中已解码的base64数据的值

此值已编码为base64

    {
     a: "008078888658936",
     b: "REA"
    }

并使用此代码解码

    var mytokenvalue = "ewphOiAiMDA4MDc4ODg4NjU4OTM2IiwKYjogIlJFQSIKfQ=="
    let decoded = Buffer.from(token, 'base64')

同时,当我试图获得解码值

console.log(decoded.a)

我在我的控制台中未定义。请帮忙

回答如下:

你可以这样做:

    var token = "ewphOiAiMDA4MDc4ODg4NjU4OTM2IiwKYjogIlJFQSIKfQ==";
    eval('var decoded = ' + Buffer.from(token, 'base64').toString());
    console.log(decoded.a);

但是如果base64编码的字符串可以来自你无法控制的地方,那么eval是非常危险的。任意字符串可能会扩展为某些意外的JavaScript,这会导致eval做一些会使您的程序出现异常或违反安全性的行为。

最好将原始对象表示为JSON字符串(使用JSON.stringify来执行此操作)并对该字符串进行base64编码。然后你可以使用JSON.parse重建原始对象而不承担使用eval的风险。像这样:

    var obj = { x: "foo", y: 123 };
    var obj_json = JSON.stringify(obj);
            // obj_json is '{"x":"foo","y":123}'
    var obj_b64 = Buffer(obj_json).toString('base64');
            // obj_b64 is 'eyJ4IjoiZm9vIiwieSI6MTIzfQ=='
    var decoded = JSON.parse(Buffer.from(obj_b64, 'base64').toString());        
    console.log(decoded.x);
发布评论

评论列表(0)

  1. 暂无评论