Windows Server 2012 R2 Essentials のリモートWebアクセスのサイトで簡単な入力フォームを作成してみました。
その際に、入力欄へHTMLタグやスクリプトなどを入力すると「アプリケーションでサーバーエラーが発生しました。危険な可能性のある Request.Form 値がクライアントから検出されました」と表示され、先に進めなくなりました。これは、asp.net で、既定の動作です。今回は、この画面を表示させずに正しいページが表示させるようにします。
requestform_000

いろいろな対処方法があるとは思いますが、今回は次の2つを実行しました。

  • バリデーションを無効にする
  • 入力されたデータをHTMLエンコードする

【バリデーションを無効にする】
1.IIS マネジャーを起動し、管理の構成エディタをクリックします。
requestform_001

2.セクションで system.web > httpRuntime を選択し、「requestValidationMode」の欄を2.0へ変更します。
requestform_003

3.セクションで system.web > pages を選択し、「validateRequest」が false であることを確認します。
requestform_004

【入力されたデータをHTMLエンコードする】
入力されたデータをHTMLエンコードするには、以下の HttpUtility メソッドのHtmlEncode 関数を使用します。

HttpUtility.HtmlEncode(入力された値)
広告