2012-02-07 75 views
8

我想賣的iPhone應用程序,將容納一個單一的網絡視圖來一個網頁,說http://www.myapp.com/webview/我想應用有效地存儲認證所需的憑證,在網站(即只有購買了應用程序的人才能查看此頁面)安全的HTTPS加密的iPhone應用程序,網頁

我還有什麼可以在iPhone上擁有安全,簡單的webview,而無需用戶登錄(實質上,他們購買應用程序將構成他們的身份驗證頁)

任何人都可以在這方面幫助?

+0

你應該真的接受下面的答案。這很棒。 – 2013-03-20 21:28:16

回答

18

沒有絕對的方式來實現這一目標。如果您有一個使用共享憑證的Web服務(應用程序中捆綁了一個),則可以對該憑證進行逆向工程。最終,確保在另一臺計算機上運行的客戶端是「您的」客戶端是不可能的。

已經有很多這方面的討論。這不是絕望,只有100%(甚至90%)才能解決。通過SSL的簡單共享密鑰將阻止大多數攻擊者,而不會損害用戶或花費大量開發費用。這是混淆,而不是安全,但便宜和「最有效」比昂貴和「最有效」要好得多。

如果你有一個非常高價值的產品,那麼它可能有必要更積極的(昂貴的)解決方案。所有這些解決方案包括以下兩種情況之一:

  • 驗證用戶,而不是節目,或
  • 持續警覺,留意新的攻擊,並與他們打補丁修復響應。

後者是非常昂貴的,永遠不會結束。確保它是值得的。

其他一些有益的討論:


編輯我想指出一件關於我提到的「SSL上的共享密鑰」。請記住,如果您不驗證證書,您將受到非常容易的中間人攻擊。易於使用的代理如Charles可以做到這一點。最好的方法是確保返回的SSL證書由根證書籤署,而不僅僅是「任何可信證書」。您可以使用SecTrustSetAnchorCertificates()重新配置應用程序信任哪些證書。 iOS5:PTL在第11章(第221頁)中介紹了這種技術。我也將其包裝到名爲RNPinnedCertValidator的庫中。

另一個好的層是實現在服務器驗證客戶端有而沒有把它放置在導線的共享密鑰挑戰 - 應答系統。維基百科關於Challenge-resonse authentication的文章包含了對算法的很好的解釋。

+0

非常感謝,謝謝。 – 2012-02-08 09:16:02

+0

修改爲包含如何緩解SSL嗅探問題。 – 2012-02-08 13:56:38