2010-12-07 143 views
2

我寫了一個iPhone應用程序與服務器通信。應用程序向服務器發送消息並打印結果。如何知道消息是否從iPhone發送到服務器?

現在我有一個問題:有沒有辦法知道發送到服務器的消息是否來自iPhone?

我在問這是因爲我想阻止攻擊者從其他地方發送消息並淹沒服務器。

回答

0

你可以做一些形式的認證,加密或指紋,例如。使用SHA,MD5等。這樣你就可以讓攻擊者很難(但並非不可能)濫用你的服務器。

+0

需要用戶註冊才能使用該應用程序? – Robocide 2010-12-07 15:49:41

0

在您收到並檢查服務器上的連接之前,您無法從iPhone中知道它。如果你這樣做,你已經打開了由於連接耗盡而導致DOS(拒絕服務)攻擊的可能性。

1

如果您使用應用程序內購買,那麼會有一個完整的身份驗證鏈來驗證設備X購買了該應用程序。你是服務器可以跟蹤這個,然後只給以前認證的設備的完整迴應。

這種方法也使盜版應用程序幾乎不在圖片中。

這種方法不會阻止一致的DDOS攻擊,但您的服務器至少可以忽略無效的客戶端,從而顯着減少其工作量。由於您的服務器在這裏忽略了無效請求,因此它不會吸引潛在的非設備用戶,並且非法用戶可能只會在您不喜歡您時對其進行攻擊,而不會讓他們爲您的免費Web服務陷入僵局。

如果您沒有在應用程序購買中使用,您可以設置自己的身份驗證過程併爲設備提供令牌,並讓服務器記住所述令牌,然後以後只會爲具有所述請求的請求提供有效響應令牌(適當地散列和醃製)。這種方法不會阻止盜版應用程序使用您的服務,但會有效地阻止非設備使用您的Web服務(再次,除了一致的黑客攻擊之外)。

更簡單的方法是使用混淆的請求格式,這需要採取協調一致的工作來進行反向工程。

在所有這些方法中,您可能必須監視您的服務器以發現異常活動,然後採取適當的措施。

我鼓勵您將您的努力與預期風險相匹配。您可以花幾天,幾個月甚至幾年時間,正確保護應用程序,確保成本是值得的。

相關問題