2012-02-07 11 views
8

iPhoneアプリを販売したい、ウェブページに単一のWebビューを格納する、http://www.myapp.com/webview/認証のために必要な認証情報を効果的に保存したいつまり、そのアプリを購入した人だけがこのページを見ることができます)iPhoneアプリのWebページへの安全なhttps暗号化

私はiPhoneで安全なシンプルなWebビューを持っていますが、ユーザーはログインする必要はありません。ページ)

誰もがこれを助けることができますか?

+0

本当に以下の回答を受け入れる必要があります。とても良いです。 –

答えて

18

この目標を達成する絶対的な方法はありません。共有クレデンシャル(アプリケーションにバンドルされている)を使用するWebサービスがある場合、そのクレデンシャルをリバースエンジニアリングすることは可能です。最終的に、別のマシンで実行されているクライアントが「自分の」クライアントであることを保証することは不可能です。

これについて多くの議論がありました。絶望的ではなく、100%(あるいは90%でも)を解決することは不可能です。 SSLを介したシンプルな共有秘密は、ユーザーを傷つけたり、開発に多くのコストをかけることなく、攻撃者の大部分を止めるでしょう。セキュリティではなく、難読化されていますが、安価で「ほとんど効果的」は、高価で「ほとんど効果的」よりはるかに優れています。

非常に価値の高い製品をお持ちの場合は、より積極的な(高価な)ソリューションが必要です。

  • 、ユーザーではなく、プログラム、または
  • 継続的な警戒を認証新しい攻撃を監視し、それらをパッチ修正で応答:これらのソリューションはすべて、2つのいずれかが含まれています。

後者は非常に高価で、終了しません。それがその価値があることを確認してください。

いくつかの他の有益な議論:


EDIT私は「SSLによる共有秘密」についての私の言及について一つのことを指摘したいと思います。証明書を確認しないと、非常に簡単な中間者攻撃の対象になることに注意してください。 Charlesのようなすぐに利用できるプロキシがこれを行うことができます。最良の方法は、返されるSSL証明書が、ルート証明書で、「信頼できる証明書」だけでなく、署名されていることを確認することです。 SecTrustSetAnchorCertificates()を使用して、アプリケーションによって信頼されている証明書を再設定できます。 iOS5:PTLでは、この手法については第11章(221ページ)で説明しています。私はこれをRNPinnedCertValidatorというライブラリにまとめました。

もう1つの優れた層は、クライアントが共有秘密を持っていることをサーバが認証した後、チャレンジ/レスポンスシステムを実装することです。 Challenge-resonse authenticationに関するWikipediaの記事にはアルゴリズムの説明が含まれています。

+0

偉大な応答、ありがとうございます。 –

+0

SSLスニッフィングの問題を緩和する方法を含むように編集されました。 –

関連する問題