ASP.net中的validaterequest

來源:互聯網
上載者:User
這個屬性是用來驗證用戶端使用者的輸入的,用來驗證使用者的輸入中是否有危險字元的,這個屬性的預設值為true,微軟之所以這麼做是為了提高asp.net程式的安全性,所以很多程式員即使不知道怎麼來防禦駭客的攻擊,asp.net的一些預設屬性等內容已經對安全進行了控制,這也是為什麼asp.net的程式相對來說比較安全的原因!
  既然這個屬性的預設值為true,而且asp.net頁面的回傳又很頻繁,那麼如果沒有使用者的互動的地方,這樣asp.net 豈不是每次都要去嚴整呢,這樣也是有可能會來回的損耗系統的執行時間的,至於:如果沒有用戶端的互動的話,到底asp.net會不會去驗證這是微軟的工程師的問題了,對於我們來說,如果沒有用戶端互動的地方,我感覺是應該將此屬性設定為 false的,這樣的話無論 微軟的工程師怎樣設計,對我們程式的本身是沒有任何影響的!
  直接關閉這個屬性的方法是:
  1、在aspx頁面的屬性裡寫“validaterequest="false"”
  2、在web.config裡設定<configuration>
   <system.web>
      <pages validateRequest="false"/>

   </system.web>
</configuration>

  但是當需要跟使用者互動的地方,我們就要用它的預設值了,可是事情可能並沒有我們想象的那麼簡單,也沒有那麼完美,當使用者在使用一些html編輯器的時候,自己本身提交的字元裡就有等這樣的字元,這樣就要求程式員必須要關閉validaterequest 屬性,這個時候我們又該怎樣的來控制asp.net頁面的安全效能呢?
  當然了,這個地方我們可以來對一切危險字元進行過濾,這樣可能提高一些安全性,但是我們防止使用者的輸入可能考慮的會有遺漏,這樣就導致了安全還會是有問題的,我們可以反過來考慮我們到底需要提交多少特殊字元,然後對我們提交的特殊字元進行轉義或替換,這樣我們就又可以將validaterequest的屬性設定為true了,這樣既解決了程式的安全問題又滿足了我們的需求!
  有時候在與使用者進行互動的時候,使用者難免的會有輸入特殊字元的時候,因為我們設定的validaterequest 的值 為true所以頁面會不給任何提示的前提下, 直接輸出一大頁的錯誤資訊, 這樣可能就導致了使用者的誤解,他們可能認為是我們網站出了問題,使用者不可能會想到他輸入了非法的字元! 對於這種情況我們又該怎麼辦呢?
  答案是可以使用Page_Error的處理事件:protected void Page_Error(object sender, EventArgs e)
    {
       Exception ex = Server.GetLastError();
       if (ex is HttpRequestValidationException)
       {
        Response.Write("您輸入的字元中有非法字元!");
        Server.ClearError();
        }
     }

1.它所在的命名空間:System.Web.Configuration
2.程式集:System.Web(在 system.web.dll 中)
3.所在的類:pagesSection

至於在最新的MVC模式中如何關閉這個屬性,方法如下(超簡單):[ValidateInput(false)]
public ActionResult Index()  
{
    return View();
}

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.