asp.net 事件驗證

來源:互聯網
上載者:User

asp.net 事件驗證

__EVENTVALIDATION 隱藏欄位是 ASP.NET 2.0 的新增安全措施。該功能可以阻止由潛在的惡意使用者從用戶端發送的未經
授權的請求。為了確保每個回傳和回調事件來自於所期望的使用者介面元素,頁將在事件中添加額外的驗證層。頁通常通過將請求的內容與
 __EVENTVALIDATION 欄位中的資訊進行匹配,來驗證未在用戶端添加額外的輸入欄位,並且該值是在伺服器已知的列表中選擇的。頁將在產生期
間建立事件驗證欄位,而這是最不可能擷取該資訊的時刻。 像檢視狀態一樣,事件驗證欄位包含散列值以防止發生用戶端篡改。

控制項使用 ClientScriptManager 對象的 RegisterEventForValidation 方法儲存自己的安全回傳相
關資訊。每個控制項還可能會註冊它自己的唯一 ID,但這種情況十分少見。清單控制項還會儲存列表中的所有值。支援事件驗證的伺服器控制項通常在其
 IPostBackDataHandler 介面的實現中調用 ValidateEvent 方法。如果驗證失敗,將引發安全異常。

可以基於每個頁啟用和禁用事件驗證;每個控制項類都通過 SupportsEventValidation 屬性來啟用事件驗證。目前,還不能在特定控制項執行個體上啟用或禁用事件驗證。

事件驗證是為了僅限輸入一組已知值而設定的防衛屏障。它只是將安全防護提升到更高水平,但本身不會阻止指令碼注入式的攻擊。

如果在啟用 AJAX 的應用程式的環境中使用事件驗證,則可能造成問題。在這類應用程式中,某些用戶端工作可以臨時建立新的輸入元素,因而可能
會由於出現未知元素而導致下一個回傳失敗。最好的應對方法是,一旦可能就在伺服器上產生所有使用者介面,並使用階層式樣式表顯示內容在用戶端上隱藏它。這樣,
您要使用的任何使用者介面都將註冊到事件驗證欄位。如果編寫自訂控制項,則應當用 SupportsEventValidation 屬性設定該控制項,以啟
用此功能

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.