2015-08-14 72 views
2

当我将图像数据编码为base64字符串时,我使用服务器文件路径获取fs.readFile()的图像数据。我有问题:这是否意味着其他人可以解码base64字符串,然后从编码数据获取服务器路径如下?base64编码图像主机url或服务器文件路径

... 
fs.readFile(destinationFilePath, function(error, data){ 
    fulfill(data.toString('base64')); 
}); 

我不想泄露我的服务器路径,所以我也试过编码主机URL像下面的代码,我不知道要使用的base64这个正确的方式?我没有得到任何的错误,但也没有得到任何回应 - 我错过了什么?

var base64EncodeData = function(destinationFilePath) { 
    return new Promise(function (fulfill, reject){ 
     var request = require('request').defaults({ encoding: null }); 
     request.get(destinationFilePath, function (error, response, body) { 
     if (!error && response.statusCode == 200) { 
      data = "data:" + response.headers["content-type"] + ";base64," + new Buffer(body).toString('base64'); 
      console.log(data); 
      fulfill(data); 
     } 
     }); 
    }); 
}; 
+1

如果您编码这样的任何东西,您可以复制路径加密并对其进行解码。如果你看谷歌,你会发现许多网站将编码/解码。如果出于某种原因某人想要找到路径,可以在几秒钟内完成。 https://www.base64decode.org/ – NewToJS

回答

4

没有你不通过对图像进行编码的base64泄露你的服务器的路径。您生成的base64仅包含二进制图像数据的base64表示。事实上,通过编码它们删除任何使用的路径,当你一个HTML页面中显示它们例如BASE64:

<img alt="base64 image" src="data:image/png;base64,isdRw0KGgot5AAANdSsDIA..." />

src属性包含正在提供的数据标志data:文件的MIME类型image/png;编码base64,和编码图像数据isdRw0KGgot5AAANdSsDIA...

+0

所以它意味着编码图像二进制数据不编码图像路径,对吧? – user1775888

+3

大卫,我想运营商想知道客户端是否可以解码base64以获得原始路径。 *是否意味着其他人可以解码base64字符串,然后准确地获取服务器路径* – NewToJS

+1

。当你调用'fs.readFile'时,你要求将路径位置处的数据转换为base64字符串,而不是路径本身:'data.toString('base64')'。如果你编码的路径是'destinationFilePath.toString('base64')'。但为了让你再次知道fs.readFile返回的数据不包含'data'变量中的这些信息。 –