Web APIとValidateAntiForgeryToken
2023-10-16 01:54:17
質問
私たちは、Web ページから AJAX スタイルと呼ばれるいくつかの既存の MVC Web サービスを持っています。 これらのサービスは、リクエストの偽造を防ぐために ValidateAntiForgeryToken 属性を使用しています。
私たちはこれらのサービスを Web API に移行しようとしていますが、同等の偽造防止機能はないように思われます。
私は何かを見逃しているのでしょうか? Web APIでリクエストフォージェリーに対処するための別のアプローチがあるのでしょうか?
どのように解決するのですか?
このようなauthorization属性を実装すればよいでしょう。
[AttributeUsage(AttributeTargets.Method | AttributeTargets.Class, AllowMultiple = false, Inherited = true)]
public sealed class ValidateAntiForgeryTokenAttribute : FilterAttribute, IAuthorizationFilter
{
public Task<HttpResponseMessage> ExecuteAuthorizationFilterAsync(HttpActionContext actionContext, CancellationToken cancellationToken, Func<Task<HttpResponseMessage>> continuation)
{
try
{
AntiForgery.Validate();
}
catch
{
actionContext.Response = new HttpResponseMessage
{
StatusCode = HttpStatusCode.Forbidden,
RequestMessage = actionContext.ControllerContext.Request
};
return FromResult(actionContext.Response);
}
return continuation();
}
private Task<HttpResponseMessage> FromResult(HttpResponseMessage result)
{
var source = new TaskCompletionSource<HttpResponseMessage>();
source.SetResult(result);
return source.Task;
}
}
で、APIアクションを装飾します。
[ValidateAntiForgeryToken]
public HttpResponseMessage Post()
{
// some work
return Request.CreateResponse(HttpStatusCode.Accepted);
}
関連
-
[解決済み] Entity Framework Code Firstを使用して一意制約を設定することは可能ですか?
-
[解決済み] RedirectToActionのパラメータとしてmodelを渡すことはできますか?
-
[解決済み] Chromeを使用してASP.NET Web APIがXMLの代わりにJSONを返すようにするにはどうすればよいですか?
-
[解決済み] ASP.NET MVCのビューを文字列としてレンダリングする方法は?
-
[解決済み】jQuery Ajaxの呼び出しとHtml.AntiForgeryToken()について)
-
[解決済み】NULLモデルを持つrenderpartialは、間違った型を渡される
-
[解決済み】ASP.NET MVC 3 - 部分テンプレートと表示テンプレートと編集テンプレート
-
[解決済み] mvc 4 で部分ビューにパラメータを渡すにはどうすればよいですか?
-
[解決済み] ASP.NET MVC 1でHttpContextBaseからHttpContextオブジェクトを取得するにはどうすればよいですか?
-
[解決済み] ASP.NET Web API ブラウザがリクエストをキャンセルすると OperationCanceledException が発生する。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Automapperにタイプマップの設定がない、またはマッピングがサポートされていない - エラー
-
[解決済み] プロジェクトのデフォルトのXMLネームスペースはMSBuild XMLネームスペースである必要があります。
-
[解決済み】Html.ActionLinkが"?Length=4 "とレンダリングされるのはなぜか?
-
[解決済み】ASP.NET mvcとIISでURLのドットが原因で404になる
-
[解決済み】MVC 4 @Scripts "does not exist".
-
[解決済み】ASP.NET MVC 3 - 部分テンプレートと表示テンプレートと編集テンプレート
-
[解決済み] MVCとRazorにおけるHtml.TextboxForとHtml.EditorForの相違点
-
[解決済み] ASP.NET MVCのモデルでUrlHelperを呼び出す
-
[解決済み] アクションリンクでエリア名を指定するには?
-
[解決済み] ソートロジックは、モデル、ビュー、コントローラのいずれに配置するのがよいのでしょうか?[クローズド]