2015-08-14 74 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'變量中的這些信息。 –