2011-10-07 4 views
0

そのAPIへのajax呼び出しを行うAPIとウェブサイトが同じサーバー(ドメイン)にある場合、そのAPIをどのように保護しますか?通話を行っているウェブサイトと同じドメイン/サーバ上でAPIを保護していますか?

同じサーバーからのリクエストのみを許可します。他のドメインからのリモートリクエストはありません。私はすでにSSLをインストールしていますが、これは私が安全だという意味ですか?

+0

ローカルホストからの要求のみを要求するか、同じドメインからの要求のみを要求するかを明確にすることはできますか? – stivlo

答えて

1

私は、あなたが解決するのを助けたいという混乱があると思います。

あなたが "Ajaxの呼び出し"について話しているという事実は、あなたのアプリケーションがあなたのサーバーにリモートリクエストをしているということです。あなたのウェブサイトが同じドメインから提供されたとしても、あなたはリモートリクエストをしています。

私は、同じサーバーからのリクエストのみを許可します。

そこに問題があります。あなたは、サーバーからサーバーへの要求を話すわけではありません。クライアントからサーバーへのリクエスト(Ajax)について話しているので、IP制限は使用できません(サイトにアクセスするすべてのクライアントのIPアドレスがわからない場合)。

Ajaxリクエストの制限は、他のリクエストの制限と異なる必要はありません。権限のないユーザーが「通常の」Webページにアクセスしないようにするにはどうすればよいですか?通常、ユーザーは認証を受け、サーバー上でユーザーセッションを作成し、クライアントからセッションクッキーを渡して、要求ごとに送信します。そのすべてのものがAjaxリクエストに対しても機能します。

APIがインターネット上に公開されている場合、許可されたクライアントのすべてのIPを知っていない限り、他のユーザーがリクエストを試みるのを止めることはできません。したがって、許可されたクライアントからのリモート呼び出しを許可するには、サーバー側の制御を実行する必要があります。

ああ、TLSを正しい位置に配置することは、正しい方向へのステップです。私はいつもTLSなしでできると思う開発者の数に驚いています。しかし、TLSだけでは不十分です。

1

HTTPヘッダーでrequest_refererをご覧ください。それはリクエストがどこから来たかを伝えます。

+0

それはあなたに確実に伝えません。 – Quentin

+0

簡単に偽造。安全な方法ではありません。 – mlissner

0

127.0.0.1またはlocalhostだけを許可するには、同じサーバーからの要求を受け入れる場合はIPアドレスを確認し、apiディレクトリまたはvirtualhost設定ディレクティブに.htaccessを配置します。設定はあなたが持っているウェブサーバーに基づいています。

+0

Ajaxが使用されているという質問があります。ほとんどの場合、「ウェブサイトを訪問しているブラウザ」を意味し、「ウェブサイト」は意味しません。ブラウザは通常、異なるIPアドレスを持つ他のコンピュータ上で動作しているので、これは役に立ちません。 – Quentin

+0

はい、私の間違い... ''リモートリクエストはありません 'と 'そのAPIへのajax呼び出し'は使えません。たぶんgoogleのようないくつかのAPIキーを設定することができます。キーがそのドメインに対して有効であればアクセスを許可します。 – Guntis

1

これは、保護する対象によって異なります。あなたはdisableprotectionそれに措置を講じない限り、これらの訪問者がサイト上

ブラウザwill protect you automaticallyを持っている資格情報を使用して、APIからデータを要求するために彼らの訪問者を取得

サードパーティ。

サードパーティあなたのAPIと訪問者の資格情報

何もアヤックスこれについての具体的なを使用してサイトへの変更を要求するために彼らの訪問者を得ます。 CSRFに対して通常の防御を実装します。ここでも、自分のクライアント

、これについての具体的な何のAjaxを使用してデータを要求

サードパーティ。要求が行われるのを防ぐことはできません。認証/承認(パスワード保護など)が必要です。私はすでにSSLがインストールされている

この平均は私が途中で傍受されるからデータを保護し、安全な

番だん。他の人がデータを要求したり、エンドポイントからアクセスしたりすることはありません。

関連する問題