3

私は以前にこのエラーを見たことがありますが、それを回避することはできないようです。この場合、XMLを投稿できるテキストボックスを備えた単純なHTMLフォームを吐き出すASHXページがあります。フォームを読み込もうとすると、「潜在的に危険なRequest.Form値...」が表示されます。

これは汎用ハンドラーであるため、「ValidateRequest」属性は使用できません。ただし、これはweb.configですでに定義されています。

<location path="xml/MyGenericHandler.ashx">
    <system.web>
      <pages validateRequest="false" />
    </system.web>
</location>

このスニペットは、.NET 3.5から4.0への移行よりも前のものであるため、破損が発生したのはここからだと思います。

ASHXページでこのエラーを回避する方法はありますか?

4

3 に答える 3

6

あなたをクリップした3.5-4.0の変更は、ASP.NET4.0のランタイムセキュリティ機能を強化したものです。簡単な修正は、次の属性を適用することです。

<httpRuntime requestValidationMode="2.0" />

残念ながら、これにより2.0リクエスト検証までのすべてのページが開かれるため、攻撃対象領域が比較的小さい場合にのみこれを行います。

于 2011-03-03T22:39:57.003 に答える
1

あなたの質問に対する直接の答えではありませんが、私はこの前の投稿を読んだと思います。エラーがスローされないようにする方法を提供します。基本的な保護をオフにすることを意味するため、ある意味では危険な方法です。ただし、その答えには十分な理由があり、すべての出力をエンコードしていることが絶対に確実な場合にのみ実装する必要があることが明確に示されています。

潜在的に危険なRequest.Form値がクライアントから検出されました

補足として、組み込みのServer.HtmlEncode関数ではなく、 MicrosoftAnti-Xssライブラリを使用することもお勧めします。

ただし、ashxを変更できる場合、より簡単な解決策は、エラーコードを変更し、「if」ステートメントを追加して、エラーメッセージにフィルタリングする文字列が含まれている場合にエラーをログに記録しないようにすることです。

于 2011-03-03T22:10:06.513 に答える
0

ハンドラーページのみの検証を無効にすることをお勧めします。

  <location path="MyGenericHandler.ashx">
    <system.web>
      <!-- requestValidationMode is to avoid HTML-validation of data posted to the handler -->
      <httpRuntime requestValidationMode="2.0"/>
    </system.web>
  </location>

または、ハンドラー内からこのプロパティを使用して、例外がトリガーされないようにします。

context.Request.Unvalidated.Form
于 2017-05-14T21:08:57.613 に答える