2012-04-24 8 views
3

iPhoneアプリケーションで使用されるPHPでHTTP REST APIがあります。HTTPSプロトコルはREST API Webサービスに関連していますか?

このAPIの一部のWebサービスは、HTTP要求資格情報のユーザー認証で保護されていますが、私は完全に暗号化された要求データを提供することで、 "真ん中にいる"攻撃を避けたいと考えています。

私はセキュリティ上の問題で、実際に習熟していないと私はどこでも私の質問に明確な答えを見つけることができませんでした:

はSTATELESS REST APIのためのHTTPSの関連ですか?

私が理解したものから、HTTPS 2つの物事ん:

  • あなたのセッションを暗号化し、彼がに話しているサーバが、それは一見そう

を確保していることをクライアントに証明APIがセッションを使用しないため、私のサーバーとアプリケーションの間でデータを暗号化する必要性に応答しません。しかし、私はまだ疑問がある。

誰かが私にそれを明確にすることはできますか?

私の他の解決策は、パブリック/プライベートキーシステムを使用してリクエストデータを暗号化することです。より適しているだろうか?

ありがとうございました!

+0

HTTPSは2つのことを行います: - 接続を暗号化します - 彼が話しているサーバがあなたのサーバであることをクライアントに証明します< - あなたのために修正しました – PeeHaa

+1

"私の他の解決策は、公開鍵/秘密鍵のシステムです。良い計画のように聞こえる。なぜSSL(HTTPS)を実装しないのですか;-) – PeeHaa

答えて

2

はい、そうです。 HTTPSはアプリケーションとは何の関係もなく、トンネリングプロトコルです。 TLS自体はステートフルなプロトコルでも、それを越えるHTTP部分はありません。

VPNを使用していた場合と同じように、RESTベースのアプリケーションを使用できます。 TLSは、接続ごとに自動的にトンネルをセットアップし、トンネルを破棄します。

つまり、HTTPとHTTPSのパイプライン化を活用してTLS接続でのスループットを向上させることは価値がありますが、それはアプリケーション自体とは関係のないパフォーマンス調整の側面です。

+0

ありがとうウィルハートンン、あなたは私に不明なものを正確に説明しました。 HTTPSのステートフルな部分がリクエストごとにリセットされる可能性がありましたが、わかりませんでした。 – Bedu33

2

HTTPSは非常に関連性が高く、はい、あなたが言及した2つの点のためです。 OAuth 2は実際にHTTPSを実施していることを知っていますか?

暗号化をすべて自分自身で行うこともできますが、APIが使いやすい部分は失われます。

「単純な」HTTPリクエストに対する中間者の攻撃のほとんどは、資格情報を盗んでリクエストを偽造することに関連していますが、送受信されたデータも読み取ることができます。データが読めないという問題がある場合は、HTTPSを使用してください。偽の要求だけが問題であれば、OAuth 1(2ではない)のような認証プロトコルで十分です。

+1

「あなた自身ですべての暗号化を行う」とは何を意味するのか分かりませんが、それは悪い考えです。 – PeeHaa

+0

@RepWhoringPeeHaa私は、公開鍵/秘密鍵システムでデータを手動で暗号化することを指摘していました。 –

+0

Aha。 Evertime誰かが自分で暗号化しようと提案していると聞きました。私はトリガーを喜ばせる傾向があります。そして私はup-vote triggerhappyについて話しているわけではありません:) – PeeHaa

0

SSLを実装したくない場合は、http://www.jcryption.org/をチェックアウトしてください。ステートレス環境で動作するかどうかわかりませんが、試してみる価値があります。基本的には、送信されるデータのキーペアの関連付けを作成するjqueryプラグインです。しかし、フォーム提出のためだけにあるかもしれません。以前の会社では、これを使用してログイン資格情報を暗号化していました。

+0

JavaScriptの暗号は一般的に悪い考えです:http://www.matasano.com/articles/javascript-cryptography/ – Bruno

0

データが機密である場合は、HTTPSを使用してください。これは、あなたが探しているトランスポート層で暗号化します。すでに指摘したように、oAuth 2.0では本質的にそれを要求しています。oAuth 1.0のようにハッシング/署名を使用することで、人を避けることができますが、SSLを使用する必要はありませんが、身体はまだクリアな状態です(APIクレデンシャルは身体ではなく透明ではありません)。

関連する問題