HttpRequestValidationException 類別

定義

當客戶端作為請求資料一部分接收到潛在惡意輸入字串時,會拋出的例外。 此類別無法獲得繼承。

public ref class HttpRequestValidationException sealed : System::Web::HttpException
public sealed class HttpRequestValidationException : System.Web.HttpException
[System.Serializable]
public sealed class HttpRequestValidationException : System.Web.HttpException
type HttpRequestValidationException = class
    inherit HttpException
[<System.Serializable>]
type HttpRequestValidationException = class
    inherit HttpException
Public NotInheritable Class HttpRequestValidationException
Inherits HttpException
繼承
屬性

範例

以下程式碼範例示範如何利用 HttpRequestValidationException.

Important

此範例中有一個文字框可接受使用者輸入,這可能構成安全威脅。 預設情況下,ASP.NET 網頁會驗證使用者輸入中不包含腳本或 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>
<%@ 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>

備註

限制並驗證使用者輸入對於防止依賴惡意輸入字串的駭客攻擊至關重要。 跨站腳本攻擊就是此類駭客手法的一個例子。 其他類型的惡意或不希望的資料可以透過各種形式的輸入在請求中傳遞。 透過限制應用程式中低層級傳遞的資料種類,即使使用你的程式碼的程式設計師沒有建立適當的驗證技術,也能避免不良事件發生。

請求驗證偵測潛在惡意客戶端輸入,並將此例外拋出以中止請求處理。 請求中止可能表示試圖破壞應用程式安全,例如跨站腳本攻擊。 強烈建議您的申請明確檢查所有關於中止申請的輸入。 不過,你可以透過將指令中的validateRequest屬性設@ Pagefalse,來停用請求驗證,如下範例所示:

<%@ Page validateRequest="false" %>

若要停用應用程式的請求驗證,您必須修改或建立應用程式的 Web.config 檔案,並將該validateRequest區段的屬性設pagesfalse,如下範例所示:

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

要停用伺服器上所有應用程式的請求驗證,你可以對 Machine.config 檔案進行修改。

Note

強烈建議您的應用程式除了 ASP.NET 執行的請求驗證外,還要明確檢查所有輸入。 請求驗證功能無法捕捉所有攻擊,尤其是針對你應用程式邏輯設計的攻擊。

建構函式

名稱 Description
HttpRequestValidationException()

建立一個新的類別實例 HttpRequestValidationException

HttpRequestValidationException(String, Exception)

使用指定的錯誤訊息和造成例外狀況的內部例外狀況參考,初始化 HttpRequestValidationException 類別的新實例。

HttpRequestValidationException(String)

建立一個 HttpRequestValidationException 新的例外,並產生指定的錯誤訊息。

屬性

名稱 Description
Data

取得一組鍵值對,提供關於例外的額外使用者定義資訊。

(繼承來源 Exception)
ErrorCode

明白 HRESULT 了錯誤。

(繼承來源 ExternalException)
HelpLink

取得或設定與此例外相關的說明檔案連結。

(繼承來源 Exception)
HResult

取得或設定 HRESULT,一個編碼的數值,指派給特定例外。

(繼承來源 Exception)
InnerException

會取得 Exception 造成目前例外的實例。

(繼承來源 Exception)
Message

取得描述目前例外狀況的訊息。

(繼承來源 Exception)
Source

取得或設定造成錯誤之應用程式或物件的名稱。

(繼承來源 Exception)
StackTrace

會取得呼叫堆疊上即時框架的字串表示。

(繼承來源 Exception)
TargetSite

會取得拋出當前例外的方法。

(繼承來源 Exception)
WebEventCode

取得與 HTTP 例外相關的事件碼。

(繼承來源 HttpException)

方法

名稱 Description
Equals(Object)

判斷指定的物件是否等於目前的物件。

(繼承來源 Object)
GetBaseException()

當在派生類別中被覆寫時,回傳 Exception 是一個或多個後續例外的根因。

(繼承來源 Exception)
GetHashCode()

做為預設哈希函式。

(繼承來源 Object)
GetHtmlErrorMessage()

會收到 HTML 錯誤訊息,要回傳給客戶端。

(繼承來源 HttpException)
GetHttpCode()

取得 HTTP 回應狀態碼,回傳給用戶端。

(繼承來源 HttpException)
GetObjectData(SerializationInfo, StreamingContext)

取得例外的資訊並將其加入 SerializationInfo 物件。

(繼承來源 HttpException)
GetType()

取得目前實例的執行時型態。

(繼承來源 Exception)
MemberwiseClone()

建立目前 Object的淺層複本。

(繼承來源 Object)
ToString()

回傳包含錯誤 HRESULT 的字串。

(繼承來源 ExternalException)

事件

名稱 Description
SerializeObjectState
已淘汰.

當例外被序列化以建立包含該例外序列化資料的例外狀態物件時,會發生這種情況。

(繼承來源 Exception)

適用於