9

CSRFから保護される ASP.NET Web API を使用して API を作成する方法を理解しようとしていますが、Web 以外の環境 (ネイティブ モバイル アプリケーションなど) からもアクセスできます。

私が最初に考えたのは、Web 以外の環境では偽造防止トークンの検証に成功することは決してないということです。フォームが投稿されていないからです。これは本当ですか?検証を機能させる方法はありますか?

検証する方法がない場合、私の 2 番目の考えは、非 Web 呼び出しではなく、Web 呼び出しの偽造防止トークンを検証する API を提供することです。しかし、攻撃者はこの「非 Web」API を CRSF 攻撃に簡単に使用できるようですよね?

非 Web API は非 Web 認証メカニズム (OAuth?) のみをサポートする必要があるため、ブラウザー経由で要求を再生できないという答えですか? それとももっと簡単な方法がありますか?

それが唯一の方法である場合、安全でない認証メカニズムをすべてオフにする簡単な方法はありますか? これらのシナリオをサポートするために、ASP.NET Web API にはややシンプルでハッピーなパスが必要ではないでしょうか?

4

3 に答える 3

6

CSRF は、Cookie、基本認証、NTLM などの永続的な認証メカニズムを使用している場合にのみ問題になります。Mike Wasson には、 Javascript で webapi に対して CSRF を使用する例があります。

CSRF は Web シナリオでのみ問題になるため、非 Web 要求をチェックする必要はないと主張できます。ブラウザーからのすべての ajax 要求は、jquery、ネイティブ XmlHttpRequest クラス、またはヘッダー (X-Requested-With) が付属するものを介しているかどうかにかかわらず、XMLHttpRequest の値を持ちます。そのため、CSRF チェックをそのヘッダーを含むリクエストのみに制限できます。ヘッダーがないものはすべてブラウザーの外部からのものである必要があります。

あなたが認証しているなら、私はある種の共有秘密またはOAuthメカニズムを見て、検証するDelegatingHandlerサーバー側を持っていると言った. X-Authentication ヘッダー経由で送信 - 永続的ではなく、(CSRF トークンと同様に) すべての要求に添付する必要があるため、CSRF の問題はありません。ドミニクはいつものように、この種のことをうまく記録しています。

于 2013-04-10T14:50:53.483 に答える
0

最新の MVC4 アップデートの SPA テンプレートをご覧ください。Anti-CSRF for Web API のサンプル実装があります。

于 2013-04-02T05:30:35.870 に答える