2010-01-24 56 views
3

我正在開發一個Web應用程序的API。桌面客戶端將使用簡單的HTTP帖子(REST)與API進行交互。我將使用SSL,這是毫無疑問的。我的問題是:我應該在通過SSL發送數據之前加密數據嗎?所發送的信息可能包含機密信息。 SSL足夠了還是我應該做更多?我唯一關心的是增加更多的安全性,這會讓人們更難以與API進行交互。任何想法都將非常感激。API安全問題:SSL或更多?

回答

4

不,SSL提供強大的加密功能。只要確保你強制客戶端使用HTTPS,並且如果你真的偏執狂,檢查密碼是否足夠強大。

如果您的Web應用程序直接將數據傳遞給某個其他系統,您希望第二次加密的唯一原因是。在這種情況下,您可以讓Web應用程序不知道實際數據,並在客戶端和最終目的地之間提供端到端加密。

+0

謝謝 - 我已經強制SSL。我喜歡你的想法,讓服務器不知道數據並讓客戶端保持加密密鑰,但不幸的是服務器需要訪問數據。 – 2010-01-24 16:41:24

2

如果您信任您的證書頒發機構,您的客戶做到了,並且您的密鑰具有足夠的安全性(RSA 2048在一段時間內不會中斷),那麼根本沒有問題。您無需在SSL之前加密您的數據,因爲SSL本身提供了加密功能。

如果要通過互聯網使用此API,認證機構here的列表將對您選擇一個有用。

您還可以讓您的客戶端通過SSL進行身份驗證,並使用SSL客戶端證書進行身份驗證。

1

恕我直言,我不會在已有的加密之上添加另一層加密。它會增加開銷,正如你所說,API的複雜性。存在SSL以在兩個節點之間發送安全數據,那麼爲什麼要重新發明輪子?

+0

好點,我喜歡把事情簡單化,但只是使用SSL似乎很容易。這感覺就像我錯過了一些東西。 :) – 2010-01-24 16:42:18

0

正如Shtééf已經指出的那樣,如果您需要端到端加密而不是點對點,那麼您需要加密。其他情況下,這可能與您的客戶端應用程序通過集成服務和服務總線與服務器進行通信有關。在這種情況下,當消息處於中間節點時,SSL加密不會被強制執行,並且該節點可以對未加密的機密數據執行任何想要的操作。此外,如果您的客戶使用這些集成服務,那麼它們可能不會在客戶端和集成服務之間實施SSL連接。

在處理高度機密信息時,我傾向於採用端到端安全性,而不是SSL加密通信通道。

0

是的。 SSL將有助於中間人和竊聽,但還有其他攻擊SSL對重播攻擊無助。