2016-08-20 47 views
1

以下普通的Java代碼中調用一些Web服務API:Java如何保護http連接查詢字符串URL請求傳遞並獲取敏感數據?

String url = "https://my_web_service/some_function?password=my_password"; 
InputStream is = new URL(url).openStream(); 
BufferedReader rd = new BufferedReader(new InputStreamReader(is, Charset.forName("UTF-8"))); 
String result = readAll(rd); //result is also sensitive data! 

是否是傳輸&獲取敏感數據的安全呢?假設這樣的參數不相關:

「SSL是安全的,但請記住,如果給予足夠的時間任何加密可破......」

感謝,

+1

是的,它是安全的,因爲查詢參數是由SSL證書密鑰加密的。下次使用谷歌搜索,你的問題不是什麼獨特的。 – Andremoniy

+0

@Andremoniy是**加密**。不,這不安全。它解釋了你發佈的重複內容。 – Tom

回答

2

當您使用現代密碼,您可以考慮SSL安全。 雖然 - certificate pinningother practices旨在防止這些攻擊,但仍然易受man-in-the-middle攻擊。

你的另一個問題是你傳遞密碼作爲查詢參數 - 最好是在請求體中傳遞密碼。否則它將被打印在服務器訪問日誌和客戶端日誌中(可能)。

如果這是一個網頁,而不是網絡服務,它也將被存儲在瀏覽器歷史記錄,書籤,e.t.c中。

+0

好的,我會將請求參數移動到body。但是迴應呢? 「按照定義」在上述情況下可以嗎?謝謝, – michael

+1

@michael是的,響應正常。 – bedrin

+0

@bedrin「urls中的密碼是一個壞主意」,還有一個原因:securityweek.com/hackers-can-intercept-https-urls-proxy-atta cks – Tom