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

基于ASP.NET的Web應(yīng)用程序安全性的探討

2010-12-31 00:00:00
電腦知識與技術(shù) 2010年21期

摘要:本文介紹了基于ASP.NET平臺B/S架構(gòu)的應(yīng)用系統(tǒng)網(wǎng)絡(luò)安全的設(shè)計(jì),分析了B/S三層網(wǎng)絡(luò)架構(gòu)的安全機(jī)制,給出了通過身份驗(yàn)證、權(quán)限控制、數(shù)據(jù)加密、存儲過程訪問數(shù)據(jù)庫等手段實(shí)現(xiàn)系統(tǒng)的安全性的技術(shù)要點(diǎn)。

關(guān)鍵詞:ASP.NET;B/S架構(gòu);身份驗(yàn)證;存儲過程

中圖分類號:TP393文獻(xiàn)標(biāo)識碼:A文章編號:1009-3044(2010)21-6093-03

Based on ASP.NET for Web Application Security

CHEN Shu

(Hunan Mechanical Technical Polytechnic, Changsha 410151, China)

Abstract: This paper introduces the ASP.NET platform based on B/S structure design of network security applications, analysis of the B/S three-tier network architecture, security mechanism, is given by authentication, access control, data encryption, stored procedures access to databases, to achieve security of the system of technical points.

Key words: ASP.NET; B/S structure; authentication; stored procedure

隨著Internet技術(shù)的飛速發(fā)展,構(gòu)建基于Web的應(yīng)用程序(網(wǎng)站)已成為當(dāng)今企業(yè)的主流。然而對于任何一個(gè)應(yīng)用程序,健壯有效的安全管理機(jī)制是合法使用的基本保障。因此,,全問題已成為一個(gè)重要的研究方向。本文首先結(jié)合微軟ASP.NET安全架構(gòu)解決方案,闡述ASP.NET平臺下開發(fā)B/S結(jié)構(gòu)的應(yīng)用系統(tǒng)的安全設(shè)計(jì),再從身份驗(yàn)證、權(quán)限管理、數(shù)據(jù)加密三個(gè)方面分析如何保障數(shù)據(jù)和系統(tǒng)的安全。

1 基于ASP.NET的三層網(wǎng)絡(luò)架構(gòu)的安全性

當(dāng)前ASP.NET應(yīng)用程序開發(fā)一般是基于Windows 2003 Server操作系統(tǒng),采用Web服務(wù)器IIS與數(shù)據(jù)庫的連接,后臺數(shù)據(jù)庫為SQL Server 2005系統(tǒng),以Visual Studio.net為系統(tǒng)開發(fā)平臺,采用B/S的三層架構(gòu)。

所謂的三層開發(fā)就是將系統(tǒng)的整個(gè)業(yè)務(wù)應(yīng)用劃分為表示層、業(yè)務(wù)邏輯層、數(shù)據(jù)訪問層,這樣有利于系統(tǒng)的開發(fā)、維護(hù)、部署和擴(kuò)展。分層是為了實(shí)現(xiàn)“高內(nèi)聚、低耦合”。采用“分而治之”的思想,把問題劃分開來各個(gè)解決,易于控制,易于延展,易于分配資源。

表示層:負(fù)責(zé)直接跟用戶進(jìn)行交互,一般也就是指系統(tǒng)的界面,用于數(shù)據(jù)錄入,數(shù)據(jù)顯示等。意味著只做與外觀顯示相關(guān)的工作,不屬于他的工作不用做。

業(yè)務(wù)邏輯層:用于做一些有效性驗(yàn)證的工作,以更好地保證程序運(yùn)行的健壯性。如完成數(shù)據(jù)添加、修改和查詢業(yè)務(wù)等;不允許指定的文本框中輸入空字符串,數(shù)據(jù)格式是否正確及數(shù)據(jù)類型驗(yàn)證;用戶的權(quán)限的合法性判斷等等,通過以上的諸多判斷以決定是否將操作繼續(xù)向后傳遞,盡量保證程序的正常運(yùn)行。

數(shù)據(jù)訪問層:顧名思義,就是用于專門跟數(shù)據(jù)庫進(jìn)行交互。執(zhí)行數(shù)據(jù)的添加、刪除、修改和顯示等。需要強(qiáng)調(diào)的是,所有的數(shù)據(jù)對象只在這一層被引用,如System.Data.SqlClient等,除數(shù)據(jù)層之外的任何地方都不應(yīng)該出現(xiàn)這樣的引用。

ASP.NET使用.NET平臺可以快速方便地部署三層架構(gòu)。ASP.NET革命性的變化是在網(wǎng)頁中也使用基于事件的處理,可以指定處理的后臺代碼文件,可以使用C#、VB等作為后臺代碼的語言。.NET中可以方便的實(shí)現(xiàn)組件的裝配,后臺代碼通過命名空間可以方便的使用自己定義的組件。顯示層放在ASPX頁面中,數(shù)據(jù)庫操作和邏輯層用組件或封裝類來實(shí)現(xiàn),這樣就很方便的實(shí)現(xiàn)了三層架構(gòu)。

三層架構(gòu)的最大優(yōu)點(diǎn)是它的安全性。用戶只能通過邏輯層來訪問數(shù)據(jù)層,減少了入口點(diǎn),把很多危險(xiǎn)的系統(tǒng)功能都屏蔽了。

2 ASP.NET應(yīng)用的安全性

ASP.NET應(yīng)用程序系統(tǒng)利用ASP.NET與IIS聯(lián)合起來協(xié)同工作提供了優(yōu)秀的安全控制,包括身份驗(yàn)證和權(quán)限控制兩部分。身份驗(yàn)證是對發(fā)送請求信息的用戶進(jìn)行身份識別,一旦驗(yàn)證通過,權(quán)限控制程序就會決定用戶是否有權(quán)限訪問所調(diào)用的資源。ASP.NET提供了3種驗(yàn)證用戶的模式:Windows、Form和Passport。

2.1 Windows身份驗(yàn)證

在這種身份驗(yàn)證模式下,ASP.NET 依靠 IIS 對用戶進(jìn)行身份驗(yàn)證并創(chuàng)建 Windows 訪問令牌來表示經(jīng)過身份驗(yàn)證的標(biāo)識。Windows身份驗(yàn)證過程如圖1所示。IIS 提供下列3種身份驗(yàn)證機(jī)制。

2.1.1 基本身份驗(yàn)證

基本身份驗(yàn)證要求用戶以用戶名和密碼的形式提供證書以證明其標(biāo)識。用戶證書以不加密的 Base64 編碼格式從瀏覽器傳送到 Web 服務(wù)器。由于 Web 服務(wù)器得到的用戶證書是不加密的格式,因此 Web 服務(wù)器可以使用用戶證書發(fā)出遠(yuǎn)程調(diào)用(例如,訪問遠(yuǎn)程計(jì)算機(jī)和資源)。

2.1.2 摘要式身份驗(yàn)證

摘要式身份驗(yàn)證與基本身份驗(yàn)證類似,但它從瀏覽器向 Web 服務(wù)器傳送用戶證書時(shí)不采用不加密的格式,而采用哈希格式。因此,它更為安全,不過它要求使用 Internet Explorer 5.0 或更高版本的客戶端以及特定的服務(wù)器配置。

2.1.3 集成Windows 身份驗(yàn)證

集成Windows 身份驗(yàn)證使用與用戶 Internet Explorer Web 瀏覽器的加密交換信息來確認(rèn)用戶標(biāo)識,服務(wù)器檢查這些信息,以確定用戶是否有權(quán)訪問。

2.2 Form驗(yàn)證

Form驗(yàn)證即窗體驗(yàn)證,此方式對基于用戶的驗(yàn)證授權(quán)提供了很好的支持,可以通過一個(gè)登錄頁面自行編寫代碼驗(yàn)證用戶的身份,將此用戶的身份發(fā)回到客戶端的Cookie,之后此用戶再訪問這個(gè)Web應(yīng)用就會連同這個(gè)身份Cookie一起發(fā)送到服務(wù)端。服務(wù)端上的授權(quán)設(shè)置就可以根據(jù)不同目錄對不同用戶的訪問授權(quán)進(jìn)行控制了。正因?yàn)镕orms驗(yàn)證模式使用的靈活性,所以在Web應(yīng)用程序使用最普遍。

安全處理流程如圖2所示。

在登錄界面中提交按鈕的Click事件處理程序中,可檢查用戶輸入的賬號和密碼和數(shù)據(jù)庫中用戶表中的賬號和密碼是否相符,相符則通過驗(yàn)證,同時(shí)返回此賬號相對應(yīng)的身份。

3.2.1 確保密碼安全

在建立ASP.NET應(yīng)用程序數(shù)據(jù)庫時(shí),保護(hù)用戶的信息安全是非常必要的。所以比較安全的做法就是用戶密碼不以明文的方式存儲在數(shù)據(jù)庫中,而是存儲它們加密后的版本。當(dāng)需要對用戶進(jìn)行驗(yàn)證時(shí),只是對用戶的口令再進(jìn)行加密,然后把它與數(shù)據(jù)庫中的加密口令進(jìn)行比較,如果相同,則通過驗(yàn)證。

ASP.NET可以方便地實(shí)現(xiàn)對密碼的加密,在命名空間System.Web.Security中包含了類FormAuthentication,其中有一個(gè)方法HashPasswordForStoringlnConfigFile可解決此問題,它支持用于加密字符串的“SHA1”和“MD5”散列算法,將用戶提供的密碼變更亂碼,然后存儲起來。而且這兩種加密算法都是不可逆的,即使入侵者進(jìn)入了Web服務(wù)器的數(shù)據(jù)庫系統(tǒng),也不能還原出密碼,這樣在數(shù)據(jù)庫中存儲的就不是實(shí)際的密碼而是加密后的密碼,保證了用戶、數(shù)據(jù)和數(shù)據(jù)庫的安全。

具體做法,以下是實(shí)現(xiàn)加密的代碼片斷:

……

public void Button1_Click (object sender, System.EventArgs e)

{//取出MD5值

MD5.Text = FormsAuthentication.HashPasswordForStoringInConfigFile(TextBox1.Text,\"md5\");

}

……

通過以上簡單的兩句代碼,我們就可以實(shí)現(xiàn)將密碼加密。

3.2.2 防止SQL注入攻擊

所謂SQL注入式攻擊,就是攻擊者把SQL命令插入到Web表單的輸入域或頁面請求的查詢字符串,欺騙服務(wù)器執(zhí)行惡意的SQL命令。

例如,使用如下語句進(jìn)行登錄判斷,就存在SQL注入式攻擊隱患,

sql= \"select * from user where name= ' \" txt_user .text \" ' and pwd= ' \" txt_pwd.text \" ' \"

入侵者只需要在txt_user文本框中輸入“’or 1= 1--”,甚至不用輸入密碼,那么sql語句就變成了:

sql=select * from user where name=’’or 1= 1 -- and pwd=’’

在SQL中,or是一個(gè)邏輯運(yùn)算符,在判斷多個(gè)條件的時(shí)候,只要有一個(gè)條件成立,即1=1正確,整個(gè)等式就返回真,“--”將后面的部分作為注釋,也就是說繞過了密碼驗(yàn)證,入侵者就可以登陸系統(tǒng)。

使用存儲過程實(shí)現(xiàn)對數(shù)據(jù)的操作可以很好地解決這一問題,系統(tǒng)通過中間層的組件ADO.NET訪問數(shù)據(jù)庫,采用存儲過程實(shí)現(xiàn)對數(shù)據(jù)的操作。通過存儲過程可以實(shí)現(xiàn)用戶和數(shù)據(jù)的隔離,通過執(zhí)行存儲過程實(shí)現(xiàn)對數(shù)據(jù)表的操作,避免了對數(shù)據(jù)表的直接訪問。存儲過程還有助于對用戶屏蔽數(shù)據(jù)庫的內(nèi)部實(shí)現(xiàn),以減少應(yīng)用程序泄密的危險(xiǎn),保證了數(shù)據(jù)的安全。

部分關(guān)鍵代碼如下:

建立存儲過程代碼

CREATE PROCEDURE [PROC_login]

(@username [varchar](20),

@passward [varchar](20))

AS

select * from [Admin] where ( [username]=@username and [passward]= @passward)

GO

ASP.NET登錄代碼:

……

md.CommandType = Data.CommandType.StoredProcedure;

cmd.CommandText = \"PROC_login\";

cmd.Parameters.AddWithValue(\"@username\", txt_user.Text);

cmd.Parameters.AddWithValue(\"@passward\", txt_pwd.Text);

……

3.3 Passport身份驗(yàn)證

在這種身份驗(yàn)證模式下,ASP.NET使用Microsoft Passport的集中式身份驗(yàn)證服務(wù)。使用Passport驗(yàn)證服務(wù)必須下載Passport軟件開發(fā)的工具包SDK,并相應(yīng)地配置應(yīng)用程序,而且必須是微軟的Passport服務(wù)的成員才能使用該服務(wù)。這種身份驗(yàn)證模式使用起來較為復(fù)雜,一般很少采用。

4 結(jié)束語

本文對采用基于ASP.NET構(gòu)建的B/S結(jié)構(gòu)的應(yīng)用系統(tǒng)的安全性進(jìn)行了討論,基于Web的應(yīng)用系統(tǒng)的安全體系設(shè)計(jì)相對于傳統(tǒng)的C/S模式,既要考慮數(shù)據(jù)訪問的安全,又要考慮網(wǎng)絡(luò)的安全。Web開發(fā)平臺ASP.NET的安全訪問機(jī)制使得Web的安全性和可靠性得到了基本的保障,采用B/S的三層架構(gòu),將顯示層、中間層、數(shù)據(jù)層在邏輯上相互獨(dú)立,保證了系統(tǒng)的安全。 對數(shù)據(jù)表中密碼字段加密后存放,以及使用存儲過程防止SQL注入攻擊進(jìn)行了探討,進(jìn)一步保證ASP.NET系統(tǒng)的安全性。

參考文獻(xiàn):

[1] 李蘭友,楊曉光.ASP.NET實(shí)用程序設(shè)計(jì)[M].北京:清華大學(xué)出版社,2005.

[2] 尚俊杰,秦衛(wèi)中.ASP.NET程序設(shè)計(jì)案例教程[M].北京:清華大學(xué)出版社,2005.

[3] Scott Worle. ASP.NET技術(shù)內(nèi)幕[M].王文龍,劉湘寧,譯.北京:人民郵電出版社,2002.

[4] K.scott AllenJames Avery. ASP.NET性能高級編程[M].侯彧,譯.北京:清華大學(xué)出版社,2003.

[5] 曹建英. ASP.NET的安全性及其實(shí)現(xiàn)的策略[J].溫州師范學(xué)院學(xué)報(bào),2005(2).

[6](美)巴茲拉. ASP.NET安全性高級編程[M].王曉娜,黃開枝,譯.北京:清華大學(xué)出版社,2003.

注:本文中所涉及到的圖表、注解、公式等內(nèi)容請以PDF格式閱讀原文

主站蜘蛛池模板: 999国内精品视频免费| 一级做a爰片久久毛片毛片| 国产资源站| 漂亮人妻被中出中文字幕久久 | 欧美午夜网| 日韩精品一区二区三区免费| 日韩欧美国产成人| 国产精品一区二区无码免费看片| 国产免费人成视频网| 亚洲欧美综合另类图片小说区| 一本久道久综合久久鬼色| 欧美成人区| 国内老司机精品视频在线播出| 国产Av无码精品色午夜| 欧美成人免费午夜全| 国产中文一区a级毛片视频| 亚洲第一黄色网址| 欧美精品v| 久久福利网| 女人av社区男人的天堂| 91 九色视频丝袜| 亚洲精品无码人妻无码| 欧美亚洲国产精品久久蜜芽| 一级看片免费视频| 国外欧美一区另类中文字幕| 国产精品福利尤物youwu| 亚洲精品手机在线| 日本三级精品| 2021国产在线视频| 国产美女在线免费观看| 午夜精品久久久久久久99热下载| 91免费国产高清观看| 日韩精品欧美国产在线| 亚洲国产天堂久久综合226114| 亚洲第一区欧美国产综合| a欧美在线| 久久天天躁夜夜躁狠狠| 麻豆精品在线视频| 欧美成人午夜影院| 午夜啪啪网| 亚洲人成影院午夜网站| 欧美性猛交一区二区三区| 伊人激情久久综合中文字幕| 国产综合在线观看视频| 欧美日韩动态图| 四虎精品国产永久在线观看| A级毛片无码久久精品免费| 97人妻精品专区久久久久| 久996视频精品免费观看| 国产本道久久一区二区三区| 国产白浆在线| 亚洲一区色| 日韩国产综合精选| 色精品视频| 亚洲av无码成人专区| 成人亚洲天堂| 又爽又黄又无遮挡网站| 青青久视频| 一级福利视频| 国产成人AV男人的天堂| 男女男免费视频网站国产| 一区二区在线视频免费观看| 国产精品成人AⅤ在线一二三四| 重口调教一区二区视频| 国产系列在线| 日韩精品欧美国产在线| 国模视频一区二区| 五月婷婷精品| 456亚洲人成高清在线| 91精品视频网站| 国产婬乱a一级毛片多女| 99中文字幕亚洲一区二区| h视频在线观看网站| 激情乱人伦| 国产三级成人| 人人艹人人爽| 污污网站在线观看| 欧美一级一级做性视频| a亚洲天堂| 欧美日韩中文字幕在线| 爱色欧美亚洲综合图区| 国产a v无码专区亚洲av|