次の方法で共有


HttpRequestValidationException クラス

要求データの一部としてクライアントから受信した入力文字列に危険性が高い文字列が含まれている場合にスローされる例外。このクラスは継承できません。

名前空間: System.Web
アセンブリ: System.Web (system.web.dll 内)

構文

'宣言
<SerializableAttribute> _
Public NotInheritable Class HttpRequestValidationException
    Inherits HttpException
'使用
Dim instance As HttpRequestValidationException
[SerializableAttribute] 
public sealed class HttpRequestValidationException : HttpException
[SerializableAttribute] 
public ref class HttpRequestValidationException sealed : public HttpException
/** @attribute SerializableAttribute() */ 
public final class HttpRequestValidationException extends HttpException
SerializableAttribute 
public final class HttpRequestValidationException extends HttpException
適用できません。

解説

危険性が高い入力文字列を使用するハッカーの攻撃を防ぐには、Web アプリケーションでユーザー入力を制約し、検証することが重要です。クロスサイト スクリプト攻撃は、そのようなハッキングの一例です。さまざまな入力形式を使用して、危険性が高いその他の不要なデータが渡される可能性もあります。同じコードを使用するプログラマが適切な検証方法を実行しない場合でも、アプリケーションの低レベルで渡されるデータの種類を制限することによって、予期しないイベントを防ぐことができます。

要求の検証では、危険性が高いクライアント入力を検出し、この例外をスローして、要求の処理が中止されます。要求の中止は、クロスサイト スクリプト攻撃などのアプリケーションのセキュリティが損なわれる試みがあったことを示している可能性があります。アプリケーションで、要求の中止に関連するすべての入力を明示的にチェックすることを強くお勧めします。ただし、次の例に示すように、@ Page ディレクティブの validateRequest 属性を false に設定して、要求の検証を無効にできます。

<%@ Page validateRequest="false" %>

アプリケーションで要求の検証を無効にするには、そのアプリケーション用の Web.config ファイルを修正または作成し、次の例に示すように、pages セクションの validateRequest 属性を false に設定する必要があります。

<configuration> 
  <system.web> 
    <pages validateRequest="false" /> 
  </system.web> 
</configuration> 

サーバー上のすべてのアプリケーションで要求の検証を無効にするには、上記のように Machine.config ファイルを修正します。

メモメモ :

ASP.NET によって実行される要求の検証に加えて、アプリケーションですべての入力を明示的にチェックすることを強くお勧めします。要求の検証機能では、すべての攻撃を検出できません。特に、アプリケーション論理を標的として行われる攻撃などは検出できません。

使用例

HttpRequestValidationException を使用して、危険性が高いユーザー入力をチェックするコード例を次に示します。

セキュリティに関するメモセキュリティに関するメモ :

この例には、ユーザー入力を受け付けるテキスト ボックスがあります。これにより、セキュリティが脆弱になる可能性があります。既定では、ASP.NET Web ページによって、ユーザー入力にスクリプトまたは HTML 要素が含まれていないかどうかが検証されます。詳細については、「スクリプトによる攻略の概要」を参照してください。

<%@ Page Language="VB" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">
    Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs)
        Label1.Text = txt1.Text
    End Sub
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:TextBox id="txt1" Runat="server" />
        <asp:Button ID="Button1" Runat="server" Text="Button" OnClick="Button1_Click" />
        <br /><br />You entered: <asp:Label ID="Label1" Runat="server" Text="Label" />.
    </div>
    </form>
</body>
</html>
<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
    void Button1_Click(object sender, EventArgs e)
    {
        Label1.Text = txt1.Text;
    }
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:TextBox id="txt1" Runat="server" />
        <asp:Button ID="Button1" Runat="server" Text="Button" OnClick="Button1_Click" />
        <br /><br />You entered: <asp:Label ID="Label1" Runat="server" Text="Label" />.
    </div>
    </form>
</body>
</html>

.NET Framework のセキュリティ

継承階層

System.Object
   System.Exception
     System.SystemException
       System.Runtime.InteropServices.ExternalException
         System.Web.HttpException
          System.Web.HttpRequestValidationException

スレッド セーフ

この型の public static (Visual Basicでは共有) メンバはすべて,スレッド セーフです。インスタンス メンバの場合は,スレッド セーフであるとは限りません。

プラットフォーム

Windows 98,Windows Server 2000 SP4,Windows CE,Windows Millennium Edition,Windows Mobile for Pocket PC,Windows Mobile for Smartphone,Windows Server 2003,Windows XP Media Center Edition,Windows XP Professional x64 Edition,Windows XP SP2,Windows XP Starter Edition

Microsoft .NET Framework 3.0 は Windows Vista,Microsoft Windows XP SP2,および Windows Server 2003 SP1 でサポートされています。

バージョン情報

.NET Framework

サポート対象 : 3.0,2.0,1.1

参照

関連項目

HttpRequestValidationException メンバ
System.Web 名前空間