問題タブ [antiforgerytoken]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
asp.net-mvc - MVC3 AntiForgeryToken が Ajax ログインで壊れる
ASP.NET MVC のAntiForgeryTokenメカニズムは、現在のHttpContext.User
. を呼び出すときに、その値を使用してトークンを作成しますHtml.AntiForgeryToken()
。基本的には問題ありませんが (最後の段落の説明を参照してください)、 Ajax 呼び出しでログインすると問題が発生します。
私のコードでは、ユーザーがログインすると、資格情報が Ajax の Json オブジェクトとして送信され (AntiForgeryToken
隠しフィールドの値も Json 内で送信されます)、サーバーはユーザーを認証し、FormsAuthentication.SetAuthCookie() を適用して、Json を返します。ユーザー固有のデータを含む結果。そうすれば、ログイン時にページ全体が更新されるのを避けることができます。
問題は、サーバーへの後続のすべての Ajax リクエストが で失敗するValidateAntiForgeryTokenAttribute
ことです。これは、偽造防止 Cookie と互換性のない偽造防止トークンが必要になるためです。
ログイン後のすべての Json リクエストが成功するように、有効な偽造防止トークンを取得してクライアントの非表示フィールドに入れるにはどうすればよいですか?
新しい隠しフィールド トークンを手動で取得しようとしました (AntiForgery.GetHtml()
アクションで使用し、トークン文字列自体を抽出し、それを Json でクライアントに返し、JavaScript で偽造防止隠しフィールドに手動で配置します) が機能しません -後続の Ajax 呼び出しはValidateAntiForgeryTokenAttribute
、サーバー上で失敗します。AntiForgery.GetHtml()
実際、 (基本的にはヘルパーが行うことです) を呼び出すたびにHtml.AntiForgeryToken()
異なるトークンが生成され、前のトークンが無効になります。
HttpContext.User = new GenericPrincipal(new GenericIdentity(email), null);
詳細はこちらにも設定しようとしましたが、うまくいきません。
注: この解決策は、私の特定の状況のために機能しません。サーバー上のユーザー ID を変更する Ajaxログイン、したがって、ログイン前に生成されたすべてのトークンが無効です。この解決策も、別の問題に対処するため適用されません。
asp.net-mvc-3 - フォーム認証なしの AntiForgeryToken
MVC3 を使用する Web サイトと、フォーム認証にまったく依存しないカスタム認証方法があります。少なくとも、私が知る限りではそうです。web.config で設定します
コード内のどこでも HttpContext.User を使用/設定することはありません。問題は、@Html.AntiForgeryToken() を使用すると、ユーザーに次のエラー メッセージが表示される場合があることです。
次のコードを使用して、OnAuthorization のすべての偽造防止チェックを一元化します。
そこで例外が発生します。アプリケーション プールのリサイクル時に新しいキーが生成されないように、web.config で machineKeyを定義しました。これで問題は解決しませんでした。
次に、クライアントのブラウザが Cookie を送信していないのではないかと考えました。Cookie のログ記録を開始したところ、RequestVerificationToken_Lw Cookie が送信される場合と送信されない場合があることに気付きました。Google アナリティクスによって作成されたような他の Cookie は問題なく送信されます。ブラウザの何かが一部の Cookie を取り除き、他の Cookie をそのままにしている可能性はありますか?
偽造防止トークンはフォーム認証に依存しているようです。これは事実ですか?信頼できる方法でフォーム認証を使用しない場合に AntiForgeryToken を使用し続ける方法。上記の方法は 90% 以上のケースで機能しますが、一部の人には機能しない理由を特定することはできません.
考え?
ありがとう!
ajax - 同じ MVC3 ページで偽造防止検証を使用して複数の ajax フォームを使用するにはどうすればよいですか?
同じ cshtml ページのコントローラーに投稿できるフォームが複数ある場合、偽造防止の検証は機能しません。MVC3 コードを調べたところ、コードの次の部分に問題があることがわかりました。
私たちが持っているcshtmlは次のようなものです:
この問題を解決するのを手伝ってもらえますか? 偽造防止トークンの 1 つを削除した後、すべてが期待どおりに機能するように見えることがわかりました。
偽造防止用のマシンキーを設定しようとしましたが、うまくいきませんでした。
よろしく。
asp.net-mvc - MVC Antiforgery requestvalidation トークンがクエリ文字列に表示される
次のコードを含む MVC 3 ビューがあります:-
フォームを投稿すると、クエリ文字列内に __RequestVerificationToken= と検証トークンの内容が表示されます。
これが当てはまる理由と、それをソートする方法についてのアイデアはありますか?
php - ユーザーがフォームを偽造するのを防ぐ安全な方法
ユーザーがPHPまたはjquery側でフォームを偽造するのを防ぐにはどうすればよいですか?私はJqueryのajax機能を使用してフォームを送信しています。これは、技術者が何かの値などの変数を変更できることを意味します(変更された/はユーザーIDまたはそのようなものです)firebugまたはwebinspectorなどを使用して。
では、ユーザーがこれらの変数を変更したり、安全で適切な方法で変更できないようにするにはどうすればよいでしょうか。
ありがとう
.net - .NET Mvc3 偽造防止トークン
.Net MVC3 Web アプリケーションでは、どうすれば取得できますAntiForgeryToken
か? 非HtmlHelper.AntiForgeryToken()
表示フィールドでラップされたトークンを返しますが、トークンが必要なだけです。値のみを取得するオプションはありますか?
これは、(フォームなしで) URL に POST を実行する JavaScript の一部です。
c# - 必要な偽造防止トークンが提供されなかったか、無効でした
私はMVC 3を使用していますが、私が見る限り、すべてが正しくセットアップされています。
認証されたユーザーが偽造防止トークンを使用してフォームを送信すると、すべてが正常に機能します。
これは、ユーザーが送信するフォームを開いたままにしておらず、その間にユーザーのログインが期限切れになった場合を除きます。
ユーザーが認証されなくなったためにフォームを送信すると、サインイン ページに戻る必要があります。(これは時々起こります)
代わりに、「必要な偽造防止トークンが提供されなかったか、無効でした」という例外が発生しました。投げられます。暗号化されたトークンには、ユーザーが認証されなくなったため検証できないユーザーの詳細が含まれているため、スローされると思います。
例外は正しいですが、実際の問題はユーザーが開いているフォームから離れてログインがタイムアウトしたことであるため、ページがログイン画面に戻る必要があるため、決してスローされるべきではありません。
この問題は、常に発生するとは限らないため、再現が困難です。
多くの人がこの問題を抱えているようですが、解決策はありません。
これは MVC 自体の問題ですか?
マシンキーの設定などはすべて正しいので、問題はありません。
c# - ASP.NET MVC3Webサイトの偽造防止トークンはIEでのみ失敗します
私のMVC3プロジェクトには、MVC3に組み込まれている偽造防止ロジックを使用するログインページがあります。
FirefoxとOperaでは問題なく動作しますが、IEでは次のようになります。
IEだけがこれに苦しんでいる理由に本当に困惑しています。Cookieの設定を確認しましたが、他のブラウザと同じように設定されているため、ここで迷っています。
偽造防止コードを使用するときは、SALTとドメインチェックの両方を使用します(これは重要ではありませんが、伝える価値があります)。
ビューコードは次のとおりです。
ViewBag.AppDomainは、テストおよび本番環境での使用時に簡単に設定できるweb.configの値です。
ドメインとパスの部分を偽造防止タグから削除すると、問題なく機能します。したがって、これら2つのうちの1つが問題であるに違いありません。
asp.net-mvc-3 - リンクで MVC3 AntiforgeryToken を使用しますか?
私の MVC3 サイトには、いくつかのリンクを含むページがあります。これらのリンクはすべて、異なる ID 値を持つ私のサイトのルートにリンクしており、次のように構成されています。
すなわち: www.mysite.com/links/33351/3
MVC3 の偽造防止トークン メカニズムを利用して、すべての要求がwww.mysite.com/links/33351/3
リンク インデックス ページから送信されるようにしたいと考えています。
トークンをフォームに追加する方法はよく知っていますが、これらはすべてスタンドアロン リンクです。
どうすればこれを達成できますか?