2016-10-18 12 views
0

現在、APIに接続されたいくつかのWebアプリケーション(Angularを使用してSPAとして構築されています)を構築しています。これらのアプリとAPIはすべてSSLを使用しています。SSL:すべてのエンドポイントを保護する必要がありますか

最近、一部のクライアントが認証目的で(OAuth2のリソースオーナーパスワード資格情報グラントを使用して)APIに接続する必要がありましたが、彼のウェブサイトはSSLを使用していません。

私の質問はセキュリティに関連しています。 APIがSSLを使用しているが、リクエスト元(私のクライアントのウェブサイト)がそうでない場合、データはAPIに安全に送信されますか?

リソースオーナーパスワード資格情報の使用OAuth2からの許可は、ユーザー資格情報が実際にAPIに向かってPOSTとして送信されます。それらはMUST暗号化されている(man-in-the-middle攻撃)。

私が理解したところでは、クライアントが暗号を使用してサーバをハンドシェイクする必要があるので、それはまだ安全です。しかし、私は確信したいと思います、説明は歓迎以上です。

答えて

1

あなたのAPIがSSL経由でしかアクセスできない場合、クライアントが正しく攻撃されていれば、クライアント(クライアントサーバ)とAPIの間で送信されたデータが保護されますこの接続のためにのみ。これは、保護されたあなたのAPIへのクライアントのウェブサイトにユーザーが送信してから転送されたパスワードを意味

user(browser) <-- http --> website of client <-- https --> API 
        ^^^^^^       ^^^^^^^ 
        INSECURE       SECURE 

:この保護は、ユーザーがテキスト形式でウェブサイト自体に送信されたデータ、すなわちログインには適用されません。第2ステップでは、第1ステップではないが、第1ステップではない。

+0

あなたの答えをありがとう。したがって、実際の動作では、クライアントのWebサイトには、ログインフォームがあります。送信時に、データは非同期に(Ajax)APIに送信されます。その場合、データは安全ですか? – lkartono

+0

@ lkartono:再び、データ転送は、ブラウザとWebサイトの間ではなく、WebサイトからAPIのみに保護されます。つまり、攻撃者がブラウザとウェブサイトの間で傍受される可能性があるため、明らかに安全ではありません。 –

+0

多くの意味があります。ありがとう:) – lkartono

1

ここでは、以下の2つの異なる状況が含まれます。

1)ユーザーはクライアントのWebサイトと情報を交換します。 (非セキュアなチャネル)

あなたは、クライアントのウェブサイトはSSLを使用していない言うように、それはエンドユーザーのすべての個人情報は、プレーンテキストやサイバー犯罪者に送信されることを意味することは、容易にアクセスすることができます中間者、盗聴者、その他のサイバー攻撃を行うことでデータを保護します。

2)クライアントWebサイトのデータは、APIと通信します。 (セキュアなチャネル)この場合

、あなたのクライアントのウェブサイトは、セキュリティで保護されていないですが、あなたのAPIは、クライアントのウェブサイトおよびAPIの暗号化方式にトランジットますので、誰もができるの間で、結果として、すべての通信をHTTPSプロトコルを使用して安全です送信中にデータを中断する。

関連する問題