問題タブ [request-validation]
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 - 「潜在的に危険なRequest.Path値がクライアントから検出されました(%)。」でもリクエストは大丈夫そうです
ASP.Net MVC 3.0、.NET 4.0、IIS 7
何度も聞かれたことは知っていますが、それでも何が悪いのかわかりません。
これらのメッセージはたまにしか(1日1回未満)届き、毎日約4,000回の訪問があります。
エラーレポートへのリンクは次のとおりです
。http ://wowreforge.com/elmah.axd/detail?id = 6CBE6DCA-88C2-45E7-AF53-A53061B8E25D
(XMLおよびJSONの詳細レポートへのリンクがあることに注意してください)
最初に注意することは、URL(PATH)にUTF-8でエンコードされた文字が含まれていることです:/ US / Warsong / Spartan%C3%B6
2番目に、要求はHEADであり、GET
で
はありません。 。
元のURLは次のとおりです
。
GETリクエストとHEADリクエストの両方でこのURLを試しましたが、エラーを再現できませんでした。
他に何か突くことができますか?
c# - AllowHtml、HttpRequestValidationException、および ModelState
私はこのビューモデルを持っています
html を含むHttpRequestValidationException
ifをスローする代わりに、 にメッセージを追加したいと思います。どうすればそれができますか?.Foo
ModelState
c# - RequestValidationMode を 2.0 に設定せずにリクエストの検証を無効にするにはどうすればよいですか?
ASP.NET 4.0 にアップグレードしたところ、requestValidation が機能しなくなっていることがわかりました。MSDN のドキュメントでは、web.config でrequestValidationModeを 2.0 に設定する必要があることが示唆されています。
- 4.0 (デフォルト)。HttpRequest オブジェクトは、HTTP 要求データにアクセスするたびに要求の検証をトリガーする必要があることを示すフラグを内部的に設定します。これにより、リクエスト中に Cookie や URL などのデータにアクセスする前に、リクエストの検証がトリガーされることが保証されます。構成ファイル内のページ要素 (存在する場合) または個々のページ内の @ Page ディレクティブの要求検証設定は無視されます。
- 2.0。リクエストの検証は、すべての HTTP リクエストではなく、ページに対してのみ有効になります。さらに、構成ファイル内のページ要素 (存在する場合) または個々のページ内の @ Page ディレクティブの要求検証設定を使用して、検証するページ要求が決定されます。
これは私たちにとってはうまくいくでしょうが、私は少し困惑しています. これをレガシー/互換モードに入れているようです。確かに 4.0 の動作が可能なはずですが、ページでこれをオフにするオプションがまだありますか?
asp.net - フォームデータを送信しないキャンセルボタン
UpdatePanel 内には、同時に表示されることのない 2 つの PlaceHolder があります。一方の PlaceHolder では、編集する記事をユーザーに選択させ、記事を選択すると、もう一方の PlaceHolder に表示されます。これが発生した場合、最初の可視性を false に設定し、もう一方をオンにします。
ここで、ユーザーが記事を編集するとき、いくつかのフィールドと 2 つのボタンがあります。1 つのボタンには「OK」というラベルが付けられ、フォーム データをサーバーに送信するために使用され、もう 1 つのボタンには「キャンセル」というラベルが付けられ、使用されます。ユーザーがフォーム データをサーバーに送信する必要があるのは、ユーザーが [OK] ボタンをクリックしたときだけです。したがって、キャンセルボタンがクリックされたときにフォームデータを送信しないようにシステムに知らせることはできますか?
この問題が発生したのは、最初に、記事の本文に使用されている tinyMCE コンポーネントから (HTML が含まれているため)、キャンセル ボタンをクリックしたときに RequestValidation エラーが発生したためです。このページの RequestValidation をオフにして、検証を手動で行います。
とにかく、キャンセルボタンがクリックされたときにフォームデータ送信をオフにすることはできますか?
asp.net - StackExchangeはルートURLの無効な文字をどのように処理しますか?
リクエストURLでの奇抜な文字の使用に関するScottHanselmanの投稿では、IISおよびASP.Netのセキュリティ機能を回避して、無効な文字をURLで渡すことができるようにする方法について説明しています...しかし、スタック交換は彼とは異なる方法で行っていると確信しています方法論は、サイトを厄介な攻撃やバグに対して広く開放したままにします。
StackExchangeには、次のようにエンコードされたリクエストC#
でWebサーバーに送信されるタグへのリンクがあります。GET
秘訣は...クエリ文字列の値としてではなく、リクエストパス値(ルートパラメータなど)として送信されることです...
Hanselmanの記事を見ると、RequestValidation以外のいくつかの他のセキュリティ機能をオフにすることによってのみ可能であると彼は示唆しています(後者はURLのクエリ文字列部分でエンコードされた文字を許可します)。
質問
StackExchangeはこれをどのように達成しますか?
ハンゼルマンが彼のブログで説明しているのと同じ方法で行われた場合、彼らは自分自身を守るためにどのような追加の手順を実行しますか?
asp.net-mvc-3 - ASP.NET MVC3 Request Validation 例外をモデルまたはプロパティの検証エラーとして処理する方法
私の質問はうまくいけばかなり簡単です。フォームを送信する際に、無効な文字 (特に HTML) を含むすべてのプロパティ (フィールド) をモデル エラーとしてフラグ付けしたいと考えています。私が直面している問題は、モデルのバインド/検証の前にリクエストの検証が開始され、HTTP 500 が発生することです... Model/ViewModel でプロパティ属性を使用するか 、web.config で使用することを宣伝する同様の質問を見ましたが、探しているのは、「リクエスト検証の例外をグローバルにキャッチし、モデルエラーとして表示する」方法です。さらに、HTML タグを「削除」したくありません。入力が無効であることをユーザーに通知したいのです。[AllowHtml]
<httpRuntime requestValidationMode="2.0" />
不正な入力を見つけるために正規表現の検証属性を使用することを考えましたが、前述したように、ASP.NET MVC3 での要求の検証は、モデルのバインド/検証の前に発生するため、それはうまくいきません...
Request Validation の非常に優れた概要については、こちらを参照してください。
asp.net-web-api - ASP.NET WebAPI で RequestValidation をオーバーライドする方法
Web API URL の一部として「危険な文字」を含むリクエストに問題があります。URL には、適切にエンコードされた & が含まれていますが、それでも Request Validation ASP.NET エラーが発生します。
MVC とは異なり、この機能を強制および無効にする [ValidateInput(false)] 属性はないようです。
asp.net - ユーザーが CAS SSO を使用してログアウトすると、ASP.NET MVC が HttpRequestValidationException をトリガーする
Jasig .NET CAS クライアントを使用して、組織の CAS SSO サーバーとのインターフェイスをとっています。
ただし、ASP.NET MVC 3 (これは ASP.NET WebForms にも影響すると思います) アプリケーションでは、ユーザーがログアウトすると、エラー ログに次のエラーが表示されることに気付きました。
これはユーザーが受け取るエラー メッセージではないと思います。サーバーでのみ表示されるようです。ユーザーに関する限り、ログアウトは成功しています。
ASP.NET MVC がこれらの種類の要求を検証しようとするのをやめる方法はありますか? リクエストの検証を完全に無効にできることは知っていますが、それは問題外です。ハイフンのあるサイトにはこれに関する良い質問がありますが、実際には受け入れられる答えではありません:
次の設定を web.config に追加します。
<httpRuntime requestValidationMode="2.0" />
この値を設定した後、U は validateRequest="false" を設定することでリクエストの検証を無効にすることができます
では、このリクエストの ASP.NET 検証を完全にオフにせずに無効にする方法はありますか?
編集:このリクエストは、ユーザーのブラウザからではなく、CAS サーバーから送信されるため、これもデバッグが困難です。これは、ユーザーがサインアウトしたことを実行中のすべてのアプリケーションに通知しようとしている CAS サーバーだと思います (シングル サインアウト)。したがって、ローカルでテストするときではなく、本番環境でのみこのエラーが発生します。
jquery - asmxは、dataType:"json"でjQuery.ajaxから投稿を受信するときにリクエストの検証をスキップします
文字列パラメーターを使用するASP.NETWebサービス(asmx)関数があります。組み込みのリクエスト検証はHTMLタグをキャッチする必要があり、自動生成されたlocalhostテストページを使用する場合、またはdataTypeがjson(ValidateRequest = "true")に設定されていない場合はjQueryのajax/postで機能します。
WithdataType:"json"
HttpRequestValidationException
はトリガーされません:
削除contentType
しdataType
て期待どおりの結果が得られた場合HttpRequestValidationException
。
これは私のwsを脆弱なままにします。残念ながら、WCFはオプションではありません。
asp.net-mvc - AngularJS が XSRF-TOKEN Cookie を見つけられない
ASP.NET MVC4 + Web API プロジェクトで angular 1.0.4 を使用しています。angularのCSRF保護を無駄に活用しようとしています。XSRF-TOKEN という名前の Cookie を渡していることがわかりますが、angular が応答で X-XSRF-TOKEN という名前のヘッダーとして値を追加しようとすると、値が未定義として表示されます。こちらのアドバイスに従ってみましたが、HTML がまだレンダリングされていないため、要素が見つかりません。
何が欠けている可能性がありますか?ASP.NET MVC によって生成された RequestVerificationToken Cookie は、javascript アクセスから保護されていますか?
また、Cookieまたはフォーム入力値のいずれかをAngularに遅延取得させることは可能ですか? もしそうなら、どのように?これを行う方法に関するドキュメントが見つかりません。