克里斯,
您可以在閱讀的機制被稱爲一次性密碼(動態口令)。 http://en.wikipedia.org/wiki/One-time_password
您可以設計您的應用程序,以在任何時候嘗試連接到您的Web服務時生成OTP。驗證OTP真實性的責任在於Web服務。
現在讓我進入一個小細節。想象一下,您的應用嵌入了一種算法,該算法在連接到Web服務時生成並提供一個256位數字。您設計的Web服務也實現了OTP的驗證器部分。通常,OTP算法會在其實現中考慮「一天中的時間」(我建議谷歌圍繞一些免費實現)。因此,服務器端(OTP Validator)僅在服務器和客戶端的時間在刷新時間n的窗口(例如+ - n秒)內時才起作用。通常,OTP驗證器也會在其末尾生成OTP,並比較接收到的一個。您可以在發送之前散列OTP,並比較服務器上生成的OTP的HASH(雖然沒有幫助或者更安全)。
現在問題出現了,如果有人得到算法(可能只是使用開源的OTP)會怎麼樣。那麼,它的意思是。只有使用正確的密碼才能訪問良好的安全實施,即使其他所有內容都可供攻擊者使用。爲了做到這一點,您可能需要添加一個邏輯,在他們第一次連接時配置應用程序,這是OTP期望的。在這裏,我假設首先使用的信任。您可以添加一些邏輯來存儲計算OTP時使用的唯一駐留應用程序ID。此外,您將在服務器上維護「resident-id」到「public-id」的映射。您可以附加到OTP併發送到服務器以驗證發送的應用程序是否是您設置的應用程序,這是「公共ID」。這要求您將「public-id」映射到服務器上的「resident-id」,然後在生成OTP時使用「provisioned-id」。
最重要的是,您可以添加邏輯來僅招待OTP +「public-id」組合。如果有人只是嗅探並重新發送相同的請求到您的Web服務,這將防止重播攻擊。
希望這給你一些想法。
Ujjwal
我不知道我理解你的答案。目前我使用標準的http get來從webservice獲取數據。 –
http://stackoverflow.com/questions/1048310/how-to-call-a-net-web-service-from-android你可以看到這個問題 – acebisli
我完全理解如何調用我的webmethod,我的應用程序已經做到了。我只想知道如何確保對數據盜用的呼叫! –