999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

.NET驗(yàn)證機(jī)制在Web表單驗(yàn)證中的應(yīng)用研究

2008-12-31 00:00:00冉從林
電腦知識(shí)與技術(shù) 2008年34期

摘要:隨著信息技術(shù)快速發(fā)展信息產(chǎn)品日新月異,計(jì)算機(jī)應(yīng)用在各行各業(yè)不斷深入。隨之產(chǎn)生龐大數(shù)據(jù)的有效性和安全性在網(wǎng)絡(luò)應(yīng)用系統(tǒng)中顯得非常重要。為了使數(shù)據(jù)能夠被合法訪問(wèn)并且不對(duì)數(shù)據(jù)產(chǎn)生破壞性,必須采取有效的防范措施。該文就是從用戶(hù)角度去設(shè)計(jì)和理解用戶(hù)的使用動(dòng)機(jī),選擇有效的數(shù)據(jù)驗(yàn)證方式防止數(shù)據(jù)遭受毀滅性破壞。

關(guān)鍵詞:Web;表單;驗(yàn)證機(jī)制

中圖分類(lèi)號(hào):TP311文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1009-3044(2008)34-1987-02

Application Research of the .NET Verify Rule in Web Form Verify

RAN Cong-lin

(Jiujiang University Information Technology Center, Jiujiang 332005, China)

Abstract: With the information technique quickly develops, the information products change with each passing day, computers are used widely in every field. So the usefulness and safety of data seem to be more and more important in the network application systems. Users can visit the data by legal rule, but the useful data are not destroyed by some effective measures. The paper is a typical way to select valid verifications by analyzing users’ motivation for keeping safety data from not being destroyed.

Key words:Web; form; verify rule

1 引言

對(duì)于WEB程序開(kāi)發(fā)人員表單驗(yàn)證選擇在客戶(hù)端還是在服務(wù)器端驗(yàn)證是個(gè)非常麻煩的問(wèn)題。如果進(jìn)行客戶(hù)端JavaScript驗(yàn)證,不僅難以做到美觀統(tǒng)一,而且還可能通過(guò)直接在瀏覽器提交表單來(lái)屏蔽;如果進(jìn)行服務(wù)器端驗(yàn)證,那么把檢驗(yàn)結(jié)果顯示在前臺(tái)頁(yè)面也非常麻煩。

在.NET中,這一問(wèn)題的解決方法得到了改進(jìn),開(kāi)發(fā)者可以更好的選擇,更自動(dòng)化地進(jìn)行服務(wù)器端和客戶(hù)端驗(yàn)證,或者同時(shí)進(jìn)行兩種驗(yàn)證。.NET提供了很多驗(yàn)證控件,使得開(kāi)發(fā)人員不用特別考慮是進(jìn)行客戶(hù)端還是服務(wù)器端驗(yàn)證,也不用考慮如何顯示輸出結(jié)果。

2 .NET中Web表單驗(yàn)證控件的功能和特點(diǎn)及其應(yīng)用。

1) .NET中的Web表單驗(yàn)證器及其功能。

① RequiredFieldValidator檢查用戶(hù)是否輸入或選擇了任何內(nèi)容

② RegularExpressionValidator 根據(jù)規(guī)則表達(dá)式檢查用戶(hù)輸入。該過(guò)程允許進(jìn)行許多種類(lèi)的檢查,可以用于郵政編碼和電話(huà)號(hào)碼等的檢查。

③ CompareValidator 將輸入控件與一個(gè)固定值或另一個(gè)輸入控件進(jìn)行比較。例如,它可以用在口令驗(yàn)證字段中。也可以用來(lái)比較輸入的日期和數(shù)字。

④ RangeValidator 與 CompareValidator 非常相似, 只是它用來(lái)檢查輸入是否在兩個(gè)值或其它輸入控件的值之間。

⑤ CustomValidator 允許用戶(hù)編寫(xiě)自己的代碼以加入到驗(yàn)證框架中。

2)驗(yàn)證控件是執(zhí)行客戶(hù)端驗(yàn)證、服務(wù)器端驗(yàn)證或這兩種驗(yàn)證,具體取決于顯示該頁(yè)面的瀏覽器的功能。驗(yàn)證控件具有下列特點(diǎn)。

① 可以將一個(gè)或多個(gè)驗(yàn)證控件與要驗(yàn)證的各個(gè)控件相關(guān)聯(lián)。

② 提交頁(yè)面窗體時(shí)執(zhí)行驗(yàn)證(頁(yè)面數(shù)據(jù)合法性驗(yàn)證流程圖如圖1)。

③ 可用編程方式指定是否進(jìn)行驗(yàn)證,比如提供一個(gè)取消按鈕,以便用戶(hù)無(wú)須在所有字段中都填充有效數(shù)據(jù)即可退出。

④ 驗(yàn)證控件自動(dòng)檢測(cè)應(yīng)對(duì)客戶(hù)端還是服務(wù)器端執(zhí)行驗(yàn)證。

3 確保表單輸入數(shù)據(jù)的安全靈活選擇驗(yàn)證方式

在各種Web應(yīng)用系統(tǒng)中Web表單是不可或缺的。在Web輸入表單中通常為了避免攻擊對(duì)重要數(shù)據(jù)的蓄意破壞或者保證用戶(hù)輸入信息的有效性,在系統(tǒng)中都應(yīng)該對(duì)用戶(hù)的輸入進(jìn)行檢查和檢驗(yàn),然后再存入數(shù)據(jù)庫(kù)中。那么,對(duì)Web表單數(shù)據(jù)有效性驗(yàn)證是在前臺(tái)還是在后臺(tái)進(jìn)行呢?從以下幾個(gè)方面分析。

1) 理解Web表單驗(yàn)證真正原因。在Web開(kāi)發(fā)中進(jìn)行數(shù)據(jù)有效性驗(yàn)證,通常有兩方面原因:幫助用戶(hù)輸入有效數(shù)據(jù)和保證安全性。

① 就有效數(shù)據(jù)而言,需要保證用戶(hù)輸入是合理的或者真實(shí)的,這其中包括:用戶(hù)輸入了滿(mǎn)足一定要求的用戶(hù)名、密碼和有效郵件地址等,或者包括要求用戶(hù)輸入了真實(shí)的姓名、身份證號(hào)碼等。

② 就安全而言需要保證用戶(hù)不是進(jìn)行惡意攻擊,并且確認(rèn)用戶(hù)輸入信息本身的可信性。

因此無(wú)論從哪一方面來(lái)說(shuō),進(jìn)行數(shù)據(jù)有效性驗(yàn)證都是必要的,而且可能引起問(wèn)題的原因越多,需要進(jìn)行的檢驗(yàn)就越復(fù)雜。

2) 結(jié)合Web表單有效性驗(yàn)證側(cè)重點(diǎn)靈活選擇驗(yàn)證方式。

① 對(duì)于用戶(hù)輸入的有效性,如要求用戶(hù)名不能采用非法字符,密碼滿(mǎn)足一定長(zhǎng)度或者復(fù)雜性,郵件地址滿(mǎn)足特定格式等這類(lèi)檢查要求,在用戶(hù)輸入提交之前就進(jìn)行檢查,完全可以借助.NET提供的大量驗(yàn)證控件在前臺(tái)客戶(hù)端驗(yàn)證。

② 從安全的角度考慮,即使用戶(hù)輸入數(shù)據(jù)滿(mǎn)足有效性要求,通常還應(yīng)該在服務(wù)器端后臺(tái)進(jìn)行進(jìn)一步檢查確認(rèn)。例如針對(duì)SQL注入式攻擊的情況,用戶(hù)有可能繞過(guò)前臺(tái)表單輸入頁(yè)面,直接提交數(shù)據(jù)請(qǐng)求,此時(shí)就有必要進(jìn)行后臺(tái)檢驗(yàn),以保證數(shù)據(jù)足夠的有效性和安全性檢查。相比而言,此次的檢查甚至要比前臺(tái)檢查更進(jìn)一步,并且更加復(fù)雜。

表單在前臺(tái)驗(yàn)證還是在后臺(tái)驗(yàn)證這并不等同于客戶(hù)端驗(yàn)證還是服務(wù)器端驗(yàn)證的問(wèn)題,前臺(tái)或后臺(tái)驗(yàn)證是系統(tǒng)功能的選擇和設(shè)計(jì)原則問(wèn)題,客戶(hù)端驗(yàn)證或服務(wù)器端驗(yàn)證則是一個(gè)具體的技術(shù)實(shí)現(xiàn)方式的選擇問(wèn)題。因此對(duì)于表單數(shù)據(jù)有效性驗(yàn)證,筆者認(rèn)為在.NET中比較妥善的方式是在前臺(tái)和后臺(tái)同時(shí)進(jìn)行驗(yàn)證。

3) 以SQL Server數(shù)據(jù)庫(kù)為例分析由Web表單產(chǎn)生“SQL注入式攻擊”的應(yīng)對(duì)策略。

在數(shù)據(jù)庫(kù)網(wǎng)絡(luò)應(yīng)用系統(tǒng)中采用SQL Server數(shù)據(jù)庫(kù),容易產(chǎn)生一種常見(jiàn)的安全性錯(cuò)誤,即SQL漏洞注入式錯(cuò)誤,由此可能引發(fā)利用這種錯(cuò)誤進(jìn)行所謂的“SQL注入式攻擊”。通過(guò)筆者多年在Web表單開(kāi)發(fā)中遇到“SQL注入式攻擊”問(wèn)題簡(jiǎn)單并分析其應(yīng)對(duì)策略。

SQL注入式攻擊是攻擊者把SQL命令插入到Web表單的輸入域或者頁(yè)面請(qǐng)求的查詢(xún)字符串,欺騙服務(wù)器執(zhí)行惡意的SQL命令。在某些表單中,用戶(hù)輸入的內(nèi)容直接用來(lái)構(gòu)造或者影響動(dòng)態(tài)SQL命令,或者為存儲(chǔ)過(guò)程的輸入?yún)?shù),這類(lèi)表單特別容易受到SQL注入式攻擊。

常見(jiàn)的SQL注入式的基本過(guò)程有:

① 某個(gè).NET Web應(yīng)用有一個(gè)登錄頁(yè)面,這個(gè)登錄頁(yè)面控制著用戶(hù)是否有權(quán)訪問(wèn)該應(yīng)用程序,它要求用戶(hù)輸入一個(gè)合法帳號(hào)和密碼。

② 登錄頁(yè)面中輸入的內(nèi)容用來(lái)構(gòu)造動(dòng)態(tài)的SQL命令,或者直接用作存儲(chǔ)過(guò)程的參數(shù)。

③ 攻擊者在用戶(hù)名字和密碼框輸入’’’或’1’=’1’之類(lèi)的內(nèi)容。

④ 用戶(hù)輸入的內(nèi)容提交給服務(wù)器之后,服務(wù)器運(yùn)行上面的.NET代碼構(gòu)造出查詢(xún)用戶(hù)的SQL命令,但由于攻擊者輸入的內(nèi)容非常特殊,所以最后得到的SQL命令變成:select * from user where login =’’ or ‘1’=’1’ and password = ‘’ or ‘1’=’1’。

⑤ 服務(wù)器執(zhí)行查詢(xún)或存儲(chǔ)過(guò)程,將用戶(hù)輸入的身份信息和服務(wù)器中保存的身份信息進(jìn)行對(duì)比。

⑥ 由于SQL命令實(shí)際上已被注入式攻擊修改,已經(jīng)不能真正驗(yàn)證用戶(hù)身份,所以系統(tǒng)會(huì)錯(cuò)誤地授權(quán)給攻擊者。

如果用戶(hù)的帳號(hào)具有管理員或者其他比較高級(jí)的權(quán)限,攻擊者就可能對(duì)數(shù)據(jù)庫(kù)表執(zhí)行各種想要做的操作,包括添加、刪除或更新數(shù)據(jù),甚至可能直接刪除表。

4) 根據(jù)在Web應(yīng)用系統(tǒng)中復(fù)雜的SQL注入式攻擊的基本過(guò)程和原理,如何有效避免錯(cuò)誤應(yīng)對(duì)SQL注入式攻擊,筆者認(rèn)為要堅(jiān)持下面三個(gè)基本原則。

① 對(duì)IIS的執(zhí)行權(quán)限謹(jǐn)慎管理,除非特別必要,一般不要提供執(zhí)行權(quán)限。

② 謹(jǐn)慎管理數(shù)據(jù)庫(kù)用戶(hù)的訪問(wèn)權(quán)限,通常public權(quán)限就足夠了,sa級(jí)別權(quán)限不要提供。

③ Web開(kāi)發(fā)程序代碼中盡可能多地增加對(duì)客戶(hù)提交數(shù)據(jù)的檢測(cè)。

4 防范SQL注入漏洞的具體方法

根據(jù)以上原則和筆者在Web編程開(kāi)發(fā)過(guò)程積累的經(jīng)驗(yàn)提供以下防范SQL注入漏洞的具體方法:

1) 檢測(cè)用戶(hù)輸入為空時(shí)立即重定向。

2) 強(qiáng)制檢測(cè)用戶(hù)提交信息路徑,禁止從非指定頁(yè)面提交數(shù)據(jù)。

3)對(duì)用戶(hù)通過(guò)網(wǎng)址提交的變量進(jìn)行檢查。例如,一旦發(fā)現(xiàn)客戶(hù)提交的參數(shù)中有insert、select、delete、from等關(guān)鍵字符時(shí)要立即對(duì)其進(jìn)行過(guò)濾操作轉(zhuǎn)向出錯(cuò)頁(yè)面或者給出警告信息。

4) 對(duì)所有頁(yè)面錯(cuò)誤,統(tǒng)一給出一種錯(cuò)誤提示信息。

5) 用戶(hù)密碼加密,例如采用類(lèi)似MD5沒(méi)有反向算法且不能解密的加密算法。

6) 對(duì)核心頁(yè)面程序代碼實(shí)行動(dòng)態(tài)加密管理。

7) 查看系統(tǒng)日志實(shí)時(shí)監(jiān)測(cè)系統(tǒng)運(yùn)行狀況,定時(shí)對(duì)數(shù)據(jù)進(jìn)行異地備份。

5 結(jié)束語(yǔ)

通過(guò)項(xiàng)目開(kāi)發(fā)的實(shí)際應(yīng)用表明,做表單驗(yàn)證時(shí)服務(wù)器程序不能假定客戶(hù)端程序是正確的而不加檢測(cè),這樣如果客戶(hù)端關(guān)閉JavaScript就可能造成出錯(cuò),而如果只做服務(wù)器端檢測(cè),那么需要提交到服務(wù)器端再返回,效率就會(huì)大打折扣,并且對(duì)于用戶(hù)極不方便,所以只能客戶(hù)端和服務(wù)器端作兩次驗(yàn)證的機(jī)制,這樣就能夠很大程度確保數(shù)據(jù)的安全。

參考文獻(xiàn):

[1] 丁昊凱.ASP.NET網(wǎng)站開(kāi)發(fā)典型模塊與實(shí)例精講[M].北京:電子工業(yè)出版社,2006.

[2] Payne C.ASP.NET從入門(mén)到精通[M].趙斌,譯.北京:人民郵電出版社,2002.

[3] 彭木根.數(shù)據(jù)倉(cāng)庫(kù)技術(shù)與實(shí)現(xiàn)[M].北京:電子工業(yè)出版社,2002.

主站蜘蛛池模板: 国产精品无码一区二区桃花视频| 永久免费AⅤ无码网站在线观看| 欧美午夜理伦三级在线观看| 久久先锋资源| 一区二区三区成人| 久久国产精品麻豆系列| 国产欧美中文字幕| 国产精品天干天干在线观看| 亚洲国产成人综合精品2020| 精品少妇人妻一区二区| 一本大道香蕉中文日本不卡高清二区| 九色视频线上播放| 亚洲中文字幕23页在线| 亚洲午夜片| www.亚洲色图.com| m男亚洲一区中文字幕| 老色鬼久久亚洲AV综合| a色毛片免费视频| 污污网站在线观看| 亚洲午夜国产精品无卡| 国产专区综合另类日韩一区 | 国产高清免费午夜在线视频| 国产本道久久一区二区三区| 久久精品午夜视频| 免费jjzz在在线播放国产| 国产成人超碰无码| 欧美另类精品一区二区三区| 亚洲国产综合自在线另类| 久久网综合| 国产亚洲欧美另类一区二区| 老司机aⅴ在线精品导航| 色妞永久免费视频| 99成人在线观看| www精品久久| 伊人中文网| 女人一级毛片| 又黄又湿又爽的视频| 无码粉嫩虎白一线天在线观看| 亚洲人成影院在线观看| 91口爆吞精国产对白第三集| 真实国产乱子伦视频| 日韩精品久久无码中文字幕色欲| 亚洲成a人片| 波多野结衣视频一区二区| 激情综合五月网| 欧美午夜精品| 免费99精品国产自在现线| 国产资源免费观看| 日韩精品欧美国产在线| 国产一区在线观看无码| 五月天丁香婷婷综合久久| 毛片免费观看视频| 99视频在线看| 国产精品精品视频| 国产无码精品在线| 欧美日韩一区二区三区在线视频| 亚洲精品天堂在线观看| 亚洲中文在线视频| 欧美黑人欧美精品刺激| 澳门av无码| 国产一级视频久久| 九九九久久国产精品| 麻豆精品在线| 免费播放毛片| 国产高清在线精品一区二区三区| 国产午夜一级毛片| 国产精品浪潮Av| 依依成人精品无v国产| 呦系列视频一区二区三区| 一级全黄毛片| 无码人妻热线精品视频| 一级黄色网站在线免费看| a级免费视频| 网友自拍视频精品区| 国产福利在线观看精品| 欧美中文字幕无线码视频| 国产视频a| 国产杨幂丝袜av在线播放| 激情国产精品一区| 99精品影院| 成人日韩欧美| 免费在线不卡视频|