IIS7 および .NET 4.5.1 に Web フォーム Web サイトがあり、Microsoft の要求検証を使用して http 要求を検証したいと考えています。validateRequest と requestValidationMode の web.config のデフォルト値は、それぞれ「true」と「4.0」であると想定されており、それが必要なはずです(念のため指定してみました)。
<pages validateRequest="true">
<httpRuntime requestValidationMode="4.0" />
何らかの理由で、フォームに html タグ (< script > と < a > を試行) を入力して送信すると、予想される潜在的に危険な要求エラーが発生しますが、タグはデータベースに保存されます。どうして通じたの?テキストボックスのテキスト値をそのまま取得してDBに送信するだけですが、エラーが発生するのを防ぐことが期待されます。
私が設定しようとしたとき:
<httpRuntime requestValidationMode="2.0" />
エラーは同じでしたが、今回はタグがデータベースに登録されませんでした。これは私が望んでいることです。
私の場合、安全性の低い検証モード「2.0」が実際にリクエストの通過を妨げる唯一のものである理由を理解したいと思いますが、これはあまり意味がないようです。何か足りないものがあるはずです。他の情報を提供する必要がある場合はお知らせください。