2012-12-11 18 views
5

我有一個移動應用程序(iOS),它通過URL中的GET變量發送服務器請求。通過SSL傳遞GET變量=安全嗎?

現在所有請求都是SSL保護的,這意味着我們只對所有請求使用HTTPS。

現在它不在瀏覽器中,所以沒有歷史記錄,也沒有人真正看到URL,並且我們禁用了對服務器上所有服務器日誌的訪問(這兩個事實不同於所有其他類似問題) 。

這樣說,假設傳遞的GET變量是安全的並且不能被'中間人攻擊'攻擊是安全的嗎?

回答

5

嚴格來說,「中間人」攻擊仍然可以執行。最大的問題是它是否對最終用戶透明。

中間的一個人仍然可以劫持初始的SSL握手並返回自己的SSL證書。證書可以用於正確的域名等,但是區別特徵是它(希望)不會由可信來源,即認證機構(CA)簽名。如果你的應用程序認識到這一點,並停止溝通,那麼你會沒事的。另一方面,如果您的應用程序沒有通過受信任的CA檢查真實性,那麼您將與黑客談判一個會話,黑客可以看到您的流量,檢查它,然後將其發送到真實服務器進行處理。所有來自真實服務器的響應也會被黑客看到。

如果黑客以某種方式能夠使用可信的CA密鑰對其欺詐證書進行簽名,那麼就不會阻止他們。這很少見,但CA可能會受到影響。

在網絡瀏覽器的情況下,這樣的攻擊會向用戶顯示「Stop,有點可疑」的信息,這在以後的瀏覽器版本中變得更加明顯。儘管如此,最終用戶還是可以繼續前進並接受不可信任的證書,從而有效地讓黑客竊聽。如果您的應用程序(或iOS本身)允許這樣做,除了儘可能地教育用戶之外,您幾乎無法做其他事情。總之,如果您的應用程序與目標服務器協商一個SSL通道並確保返回的證書由可信任的權威機構(並且不詢問用戶)簽名,那麼您應該沒問題。所有HTTP流量,包括GET/POST動詞和後面的標題,都將被加密。還有兩個警告字是必要的。

  • 這就是爲什麼設備(在這種情況下的iOS)必須非常小心,以保護其值得信賴的機構文件(「根CA」)
  • 你需要使用一個安全的密碼爲底層通信。對於非關鍵數據(即非個人信息),RC4可能很好,可能會更快。對於任何個人(即銀行業務),盡最大可能。如果不是默認設置,我推薦使用AES-256。
+0

有趣的答案,但RC4應該不再使用截至2015年11月。 – Corni

0

不要忘記你的請求可能通過一個代理服務器,這些也會通過日誌消息。

1

SSL爲您的請求傳輸提供了一個加密通道,但正如您知道的,一旦請求到達目的地,純文本變量將由您的訪問日誌記錄。

如果您發送的信息對任何方式都很敏感,那麼您應該使用POST。這將防止Web服務器記錄變量。它也將阻止您的安全請求被其他域名(相同的原產地策略)調用,如果這是您所關心的問題