ASP.NET數據驗證技術研究詳解
引 言
隨著ASP.NET技術為代表的新的Web技術的發展,Web在各行各業得到廣泛的應用,其功能越來越復雜,也越來越強大。Web開發中的一個很重要的問題就是,如何設計安全有效的Web程序,可以保護存儲的重要信息,以降低其受攻擊的危險。
數據驗證是驗證用戶標識真實性的過程,用以鑒別用戶身份是否合法。ASP.NET中,在編寫Web應用程序時,用戶保存或者處理信息,就需要判斷其有效性和安全性。由于Web應用程序是基于請求/響應模式的,所以Web的數據驗證有多種方式。可以在服務器端直接對數據進行驗證,也可以編寫客戶端腳本來實現數據有效性的驗證,當這些數據提交給服務器時就經過了驗證。在實際的項目開發中,既需要客戶端驗證,也需要服務器驗證。
2 幾種常用的ASP.NET數據驗證技術
2.1 基于圖片和附加碼的ASP.NET數據驗證
目前實現圖片驗證碼時有兩種方式:
(1)通過動態數據網頁中的各種腳本來實現。
(2)用支持動態數據網頁的第二方組件來實現。
組件的應用會提高效率,比較容易實現,在ASP.NET中編寫基本的腳本,賦予其必要的屬性,例如生成碼顏色,碼位數,碼尺寸等,就可以靈活地生成一組驗證碼。驗證碼圖片一般放在用戶名和用戶密碼的后邊即可,也可以根據需要放置。附加碼通常由服務器隨機產生,一般是由數字和字母組成的一串字符,顯示在登陸頁面中,用戶登錄時必須將附加碼一并輸入提交,服務器對提交的驗證碼同時進行驗證。
2.2 Web表單ASP.NET數據驗證
在ASP.NET中,被指定為runat=“server”的表單被稱為Web表單,Web表單本身是基于服務器的,是ASP.NET用來為應用程序提供大部分功能框架的一部分,服務器對界面的情況一清二楚,也就是說用戶元素只能在服務器上創建。當用戶輸人完數據提交表單時,服務器將通過另外的頁面來驗證Web表單中所輸入數據是否有效。表單在實現驗征方面具有靈活性和易于實現性,其數據驗證功能比較強大,開發人員既可以把用戶信息放在Web.config文件中,也可以將用戶的驗證信息放在數據庫或XML文件中,通過創建自己定義的程序來驗證數據。
2.3 Web窗體ASP.NET數據驗證
ASP.NET框架還提供了一種新型的數據驗證,他將使用Web服務器控件來實現數據的驗證,稱其為Web窗體數據驗證技術。因此,把專門用于Web數據驗證的Web服務器控件稱為Web數據驗證控件。ASP.NET中有6種數據驗證控件,這里著重介紹靈活強大CustomVal-idator控件,假設現在建立一個與數學有關的網站,在這個網站,要求瀏覽者提供自己喜歡的質數,以此來提高網站的訪問量。在ASP.NET中,沒有一個專門驗證質數的服務器端數據驗證控件,這樣,就有必要用到CustomValida-tor控件。以下例子用來驗證用戶輸入的數是不是質數:
2.4 使用客戶端腳本實現ASP.NET服務器控件的ASP.NET數據驗證
為了減少數據驗證時瀏覽器和服務器之間的往返時間,可采用客戶端腳本來實現其功能,在瀏覽器中使用的腳本有很多,如VBScript,JSCript,JavaScript等,但是這樣存在安全隱患,因為用戶可以任意修改客戶端腳本以跳過客戶端的驗證,還有些瀏覽器是不支持客戶端腳本的,這樣的數據驗證就必須在服務器端進行。
2.5 使用正則表達式進行ASP.NET數據驗證
正則表達式(Regular Expression)是由普通字符(稱為原義字符)和特殊字符(稱為元字符)組成的字符串,用來定義字符處理時需要匹配的內容模式。也就是說,正則表達式可以讓用戶通過使用一系列的特殊字符構建匹配模式,然后把匹配模式與Web頁面的表單輸入等目標對象進行比較,根據比較對象中是否包含匹配模式,以執行相應的處理操作。對于處理字符串的許多應用程序而言,正則表達式是不可缺少的模式描述工具。
例:定義一個匹配我國居民身份證號碼格式的正則表達式。分析:我國居民身份證號碼規定的合法格式為15位或18位數字。根據語法規定,對應的正則表達式應寫為:“\d{15}| \d{18}”。
3 對象成員ASP.NET數據驗證組件實現
以上的數據驗證技術在數據驗證方面起著重要的作用,有著各自不同的特點.他們都是經過UI邏輯的數據驗證,經過UI邏輯驗證數據后,通過開發對象成員數據驗證組件來進行下一步的業務邏輯的驗證,可以較大程度上提高數據的安全性。
大多數情況下,在UI經過驗證的數據就交給業務邏輯進行處理,而業務邏輯往往不會對數據再進行驗證操作。業務邏輯認為數據來源于UI,在UI驗證數據就已經夠安全,如果在業務邏輯再進行一次驗證有點多此一舉。而業務邏輯本身就是一個獨立體,把數據的合法性依賴于UI是不應該的,不合理的。但在業務邏輯中對成員的數據驗證并不像UI那樣有著方便的驗證控件,如果手動對每個數據成員進行編碼驗證的確會增加很大的工作量。為了解決這方面問題,將通過Custom Attribute的方式來簡化對象成員數據驗證的功能;為了簡化驗證代碼的編寫,將通過Attribute來配置對象成員需要驗證的方式,然后通過容器進行統一驗證。
為了規定一個統一的驗證規則,制定一個驗汪對象基礎類:
當定義了驗證的方式后就可以通過組件的容器對類的實例進行數據驗證。
把需要驗證的類型添加到容器中,通過容器的Vialid 方法對實例進行驗證。
4 ASP.NET數據驗證結語
通過對多種數據驗證技術的學習,可以增加Web的安全性,綜合學習這些知識以及ASP.NET和.NET框架的其他功能,就可以編寫出功能強大的Web應用程序。今后在對數據驗證技術的研究中,可以將數據驗證的實現從配置XML文件中分離出來,即用戶不需要知道如何使用這些XML文件,而是通過一個友好界面來配置要進行的數據驗證。
ASP.NET數據驗證的相關內容就向你介紹到這里,希望對你了解ASP.NET數據驗證有所幫助。
【編輯推薦】