validateRequest
採用 ASP.NET 開發網站可能會發生底下這樣的問題:
使用者填完form,送出資料後,系統回應下面的錯誤。
System.Web.HttpRequestValidationException: 具有潛在危險 Request.Form 的值已從用戶端
(addrm="臺北市徳行東路331巷50弄12...") 偵測到。
描述: 要求驗證偵測到具有潛在危險的用戶端輸入值,對這個要求的處理已經中止。
這個值可能表示有人嘗試危害應用程式的安全性,例如跨站台的指令碼處理攻擊。您
可以在 Page 指示詞或 組態區段中設定 validateRequest=false 來停用要求驗證。
但是我們強列建議您的應用程式應該明確地檢查所有這類的輸入。
這是由於在 .NET Framework 1.1 微軟加入了一個額外的檢查,使得 TextBox之類的控制項中不得有任何的 HTML 碼。這是避免類似 SQL Inject 之類的駭客攻擊。
您可以測試,在 1.1 環境中,只要在 TextBox 中輸入 <br>或<font>,只要任何的HTML指令都會造成這個問題,詳細的資訊可以參考:http://www.asp.net/faq//RequestValidation.aspx
解決方式可依照訊息所說,在使用到該控制項,或是TextBox需要輸入HTML指令的aspx檔案中的第一行Page 項目中,加入:
<%@ Page validateRequest="false" %>
一般來說該行已經有資料,修改完後會變成:
<%@ Page Language="vb" AutoEventWireup="false" Codebehind="default.aspx.vb" Inherits="book._default22" validateRequest="false" %>
或者,乾脆讓整個專案中的TextBox都可以輸入HTML,則將 web.config 檔案<system.web>和</system.web>之間加入這一行:
<pages validateRequest="false" />
成為:
<system.web>
....
<pages validateRequest="false" />
....
</system.web>
這樣整個專案中所有的TextBox都可以輸入HTML碼。