1

iPhoneクライアントとサーバー間の通信を保護したい。これを最初のステップとして実現するには、サーバーが許可されたクライアントのみに応答するようにします。したがって、誰かが通信チャネルをハッキングしたとしても、サーバーから適切な応答を取得できるようにする要求を作成できないようにする必要があります。

ここでの私の質問は、JAVAとObjective Cの間で共有されるハッシュ/暗号化/復号化アルゴリズムがあるということです。つまり、秘密鍵を使用して、Objective CのiPhoneクライアントでいくつかのアルゴリズムを使用してセキュリティデータを暗号化すると、適切になります。私のサーバーで復号化されました。これはJAVAベースであり、その逆も同様です。

適切なコード例は本当に役に立ちます。

4

2 に答える 2

2

iOS での通信の機密性を確保する最も簡単な (そして最も安全な) 方法は、HTTPS を使用してバックエンドと通信することです。NSURLConnection はこれを直接サポートします。独自のセキュリティ プロトコルを開発することは、よく知られたソフトウェア開発のアンチパターン (つまり、採用すべきではない設計パターン) です。

「承認されたクライアント」がアプリケーション (つまり、「公式の」クライアント アプリのみがバックエンドと通信できる) またはユーザーを指すかどうかは、あなたの質問からは明らかではありません。NSURLConnection での認証サポートにより、後者の方が確実にサポートされています。基本的に、ユーザーは自分のユーザー名とパスワードを提供し、この情報はリクエストごとにバックエンドに送信されます。ユーザーの資格情報は、キーチェーンにキャッシュできます。

HTTP クライアント証明書を介してクライアント アプリを認証することは可能ですが、安全な方法で実装するのは難しい可能性があります。

于 2012-04-08T03:51:14.547 に答える
1

クライアントを認証する簡単な方法は、共有シークレットを使用することです。クライアントは、MD5 または SHA1 ハッシュを使用してシークレットでリクエストに署名します (両方のライブラリは Java または Objective C で使用できます)。サーバーは、同じ方法で要求に対して署名を実行し、その署名をクライアントから渡された署名と比較することによって、クライアントの信頼性を確認します。それらが一致する場合、サーバーはリクエストを信頼します。

于 2012-04-08T04:14:00.343 に答える