HttpRequestValidationException 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
當客戶端作為請求資料一部分接收到潛在惡意輸入字串時,會拋出的例外。 此類別無法獲得繼承。
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>
備註
限制並驗證使用者輸入對於防止依賴惡意輸入字串的駭客攻擊至關重要。 跨站腳本攻擊就是此類駭客手法的一個例子。 其他類型的惡意或不希望的資料可以透過各種形式的輸入在請求中傳遞。 透過限制應用程式中低層級傳遞的資料種類,即使使用你的程式碼的程式設計師沒有建立適當的驗證技術,也能避免不良事件發生。
請求驗證偵測潛在惡意客戶端輸入,並將此例外拋出以中止請求處理。 請求中止可能表示試圖破壞應用程式安全,例如跨站腳本攻擊。 強烈建議您的申請明確檢查所有關於中止申請的輸入。 不過,你可以透過將指令中的@ Page屬性設validateRequest為 false,來停用請求驗證,如下範例所示:
<%@ Page validateRequest="false" %>
若要停用應用程式的請求驗證,您必須修改或建立應用程式的 Web.config 檔案,並將該pages區段的屬性設validateRequest為 false,如下範例所示:
<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 |
明白 |
| 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) |