2011-12-26 195 views
0

我的android應用程序發送數據到我的網站。現在,任何可以跟蹤數據發送位置的人都可以找到我的網站,並能夠運行我的php文件來處理數據。如何禁止用戶通過瀏覽器訪問我的網站?Android網絡服務器安全

回答

0

這實際上很容易做到。

在您的應用程序和您的Web服務器之間設置相互認證的SSL。基本上,您將使用Android keytool創建一個自簽名證書以部署到服務器上,然後將另一個自簽名證書(針對客戶端)部署到您的應用中。將服務器配置爲需要客戶端身份驗證,並僅接受剛部署到應用程序中的證書。將客戶端配置爲只接受安裝在服務器上的自簽名證書,並在服務器提示時顯示您部署的證書。

這很容易設置,然後你的服務器將只與你的應用程序交談(因爲它是唯一具有特定客戶端證書的),並且應用程序只會與你的服務器通信(因爲它是唯一具有特定服務器端證書的東西)。

關於如何做所有這些事情的更多細節(與walkthrough)在我的書:http://shop.oreilly.com/product/0636920022596.do

1

簡答:你不能。

龍答:您可以嘗試使用一些方法,這將使使用你的網站從瀏覽器毫無意義(如使用一些加密,編碼,自定義瀏覽器標題,認證等)。但是總有可能破解和反向工程你的(任何)安全。

我花了兩個星期逆向工程一個這樣的服務,不僅是因爲它是值得的。

0

你有幾種選擇:

  • 添加某種用戶名/密碼認證的到你的服務器,並忽略不包含用戶名/密碼的任何請求。

  • 嵌入長隨機數序列(大約200個字符),你的應用程序中,併發送與每個請求一起,忽略任何請求,除非它包含了精確的字符串。

  • 爲了提高安全性,考慮公共/私人密鑰加密。基本上你有一個公鑰和私鑰,私鑰嵌入在應用程序中,並且服務器上有一個匹配的公鑰。手機使用私鑰加密發送給服務器的任何數據,服務器使用公鑰對數據進行解密。服務器反過來,發送到手機的任何數據都使用私鑰加密,並使用私鑰解密。這(粗略)是SSL/https的工作原理。

最後一個是最安全的,但三者的組合將是理想的 - 在每次請求的用戶名/密碼,公共/私有密鑰對加密,具有200字符隨機字符串,這是加密私鑰存儲在手機上與私鑰不同的位置(大多數公鑰/私鑰加密系統將允許您使用密碼保護私鑰)。

當心沒有這些將保護你免受任何人的身體訪問電話或服務器。最後一種方法可以保護你免受其他人的傷害,即使對於那些有實際接入電話的人也很難。

通過經常更改密鑰,可以使其更難以破解。 SSL不斷創建新的公鑰/私鑰,但與電話和服務器共享新的公鑰可能會變得複雜。

如果你想防止隨意訪問您的服務器,那麼所有的這些都將正常工作。如果你想要嚴格的安全性,那麼你需要製造自己的電話硬件來正確鎖定它,甚至不會給你完美的安全性。

+0

這不是什麼意思,但你有很大的幫助我。謝謝 –