不知道大家之前有沒有注意到這個屬性這裡我們來一起討論一下這個屬性的作用以及我們以後到底該怎樣使用它!
我們先來了解一下這個屬性:(注:本屬性 中是新增的!)
它所在的命名空間:SystemWebConfiguration
程序集:SystemWeb(在 systemwebdll 中)
所在的類:pagesSection
上面我大體了解了一下這個屬性下面我們在具體的分析一下該屬性這個屬性是用來驗證客戶端用戶的輸入的用來驗證用戶的輸入中是否有危險字符的這個屬性的默認值為true微軟之所以這麼做是為了提高程序的安全性所以很多程序員即使不知道怎麼來防御黑客的攻擊的一些默認屬性等內容已經對安全進行了控制這也是為什麼的程序相對來說比較安全的原因!
既然這個屬性的默認值為true而且頁面的回發又很頻繁那麼如果沒有用戶的交互的地方這樣 豈不是每次都要去嚴整呢這樣也是有可能會來回的損耗系統的執行時間的至於:如果沒有客戶端的交互的話到底會不會去驗證這是微軟的工程師的問題了對於我們來說如果沒有客戶端交互的地方我感覺是應該將此屬性設置為 false的這樣的話無論 微軟的工程師怎樣設計對我們程序的本身是沒有任何影響的!
但是當需要跟用戶交互的地方我們就要用它的默認值了可是事情可能並沒有我們想象的那麼簡單也沒有那麼完美當用戶在使用一些html編輯器的時候自己本身提交的字符裡就有等這樣的字符這樣就要求程序員必須要關閉validaterequest 屬性這個時候我們又該怎樣的來控制頁面的安全性能呢?
當然了這個地方我們可以來對一切危險字符進行過濾這樣可能提高一些安全性但是我們防止用戶的輸入可能考慮的會有遺漏這樣就導致了安全還會是有問題的我們可以反過來考慮我們到底需要提交多少特殊字符然後對我們提交的特殊字符進行轉義或替換這樣我們就又可以將validaterequest的屬性設置為true了這樣既解決了程序的安全問題又滿足了我們的需求!
有時候在與用戶進行交互的時候用戶難免的會有輸入特殊字符的時候因為我們設置的validaterequest 的值 為true所以頁面會不給任何提示的前提下 直接輸出一大頁的錯誤信息 這樣可能就導致了用戶的誤解他們可能認為是我們網站出了問題用戶不可能會想到他輸入了非法的字符!
對於這種情況我們又該怎麼辦呢?
幸好微軟的工程師們在page裡又給出了一個Page_Error的處理事件這樣我們就可以用它來進行異常的捕獲了
代碼如下:
protected void Page_Error(object sender EventArgs e)
{
Exception ex = ServerGetLastError();
if (ex is HttpRequestValidationException)
{
ResponseWrite(您輸入的字符中有非法字符!);
ServerClearError();
}
}a
From:http://tw.wingwit.com/Article/program/net/201311/13254.html