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

基于ASP.NET的管理信息系統(tǒng)安全性研究與實(shí)踐

2010-01-01 00:00:00萬榮澤
電腦知識與技術(shù) 2010年5期

摘要:論述了面向Internet開放的信息系統(tǒng)由于用戶群復(fù)雜而存在較大的安全問題,同時(shí)論述了我院教學(xué)管理信息平臺的安全機(jī)制。針對基于ASP.NET和SQL Server 2005構(gòu)建的信息系統(tǒng),通過基于角色的窗體安全認(rèn)證機(jī)制確保程序訪問安全、防止SQL注入攻擊確保數(shù)據(jù)庫的安全、通過存儲過程操作數(shù)據(jù)庫加強(qiáng)數(shù)據(jù)庫的安全,這些技術(shù)的應(yīng)用大大加強(qiáng)了系統(tǒng)的安全性,具有很強(qiáng)的推廣價(jià)值。

關(guān)鍵詞:管理信息系統(tǒng);安全;ASP.NET

中圖分類號:TP311文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2010)05-1114-04

The Research and Practice for Management Information System Security Based on ASP.NET

WANG Rong-ze

(Guangxi Agricultural Vocation-Technical College,Nanning 53007,China)

Abstract: Discusses the open information system for Internet user base due to the complex and there is a big security problems, and discusses the teaching management information platform security mechanisms. For Information Systems based on ASP.NET and SQL Server 2005, through role-based security authentication mechanism to ensure that the form access security procedures to prevent SQL injection attacks to ensure the security of the database, through the operation of the database stored procedure to enhance the security of the database, The application of these technologies greatly enhance the system's security, has a strong promotion of the value.

Key words: management information systems; security; ASP.NET

ASP.NET和SQL Server 2005結(jié)合是開發(fā)Web模式管理信息系統(tǒng)的主要技術(shù)路線,我院的教學(xué)管理信息平臺等信息系統(tǒng)都基于這技術(shù)路線開發(fā)。由于用戶群較復(fù)雜,有本校教師、學(xué)生和社會人士等,系統(tǒng)許多功能必須面對Internet開放,安全性受到極大威脅。因此,研究基于.NET平臺的信息安全技術(shù)和方案具有很強(qiáng)的現(xiàn)實(shí)意義和推廣價(jià)值。

1 系統(tǒng)的安全機(jī)制分析

我院的教學(xué)管理信息平臺基于Internet開放,其系統(tǒng)安全機(jī)制如圖1所示。信息系統(tǒng)的程序位于防火墻的DMZ區(qū),處于網(wǎng)絡(luò)隔離區(qū)和屏蔽子網(wǎng)之間,防火墻將它與 Internet 和單位內(nèi)部網(wǎng)絡(luò)(以及 SQL Server 數(shù)據(jù)庫)隔離開。保護(hù)系統(tǒng)的安全主要就是保護(hù)SQL Server 數(shù)據(jù)庫的安全。實(shí)施系統(tǒng)的安全方案時(shí),充分利用SQL Server 2005的安全機(jī)制、ASP.NET訪問數(shù)據(jù)庫的安全機(jī)制、編寫程序時(shí)的防SQL注入攻擊、Web服務(wù)器的安全加固等。

2 基于角色的窗體安全認(rèn)證機(jī)制實(shí)現(xiàn)程序的訪問安全

在系統(tǒng)實(shí)現(xiàn)過程中,充分利用ASP.NET 提供的基于角色(即 Roles)的認(rèn)證機(jī)制實(shí)現(xiàn)系統(tǒng)的安全。

2.1 數(shù)據(jù)庫及表的準(zhǔn)備

1)教學(xué)管理信息平臺數(shù)據(jù)庫:gxnzyinfo。2)涉及到的主要數(shù)據(jù)庫表和字段:用戶信息表UserInfo(如表1所示),3個(gè)主要字段,用戶名,密碼,用戶角色;角色信息表UserRoles(如表2所示),兩個(gè)主要字段,角色名稱,角色所管理的目標(biāo)目錄。

2.2 編寫系統(tǒng)登錄程序Login.aspx

Login.aspx 添加兩個(gè)TextBox控件,取名 UserNameTextBox, PasswordTextBox,再添加一個(gè)Button,取名 LoginButton,點(diǎn)擊它進(jìn)入后臺代碼。在 LoginButton_Click 方法中添加需要的代碼:

private void LoginButton_Click(object sender, System.EventArgs e)

{ FormsAuthentication.Initialize ();

//連接并從表UserInfo 讀取數(shù)據(jù)

if (reader.Read())

{

FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(

1, // 票據(jù)版本號

UserNameTextBox.Text, // 票據(jù)持有者

DateTime.Now, //分配票據(jù)的時(shí)間

DateTime.Now.AddMinutes(30), true,

// 需要用戶的 cookie

reader.GetString(0), // 用戶數(shù)據(jù),這里其實(shí)就是用戶的角色

FormsAuthentication.FormsCookiePath);//cookie有效路徑

string hash = FormsAuthentication.Encrypt(ticket);

HttpCookie cookie = new HttpCookie(

FormsAuthentication.FormsCookieName, // 認(rèn)證cookie的名稱

hash); //加密之后的cookie

if (ticket.IsPersistent) cookie.Expires = ticket.Expiration;

Response.Cookies.Add(cookie);

string returnUrl = Request.QueryString[\"ReturnUrl\"];

if (returnUrl == 1) returnUrl = \"./\";

Response.Redirect(returnUrl);

}

2.3 創(chuàng)建(或修改) Global.asax 文件

在Global.asax 文件中找到(或新建)Application_AuthenticationRequest 方法(函數(shù))。文件中要確認(rèn)已經(jīng)包含或者使用了 System.Security.Principal 以及 System.Web.Security 命名空間,然后修改它,修改后的代碼如下:

protected void Application_AuthenticateRequest(Object sender, EventArgs e)

{

if (HttpContext.Current.User != 1)

{

if (HttpContext.Current.User.Identity.IsAuthenticated)

{

if (HttpContext.Current.User.Identity is FormsIdentity)

{

FormsIdentity id =

(FormsIdentity)HttpContext.Current.User.Identity;

FormsAuthenticationTicket ticket = id.Ticket;

// 取存儲在票據(jù)中的用戶數(shù)據(jù),在這里其實(shí)就是用戶的角色

string userData = ticket.UserData;

string[] roles = userData.Split(',');

HttpContext.Current.User = new GenericPrincipal(id, roles);

……

認(rèn)證票據(jù)(用戶名和密碼)沒有(也不應(yīng)該)作為cookie的一部分來存儲的,因?yàn)橛脩艨梢孕薷乃麄兊腸ookie。本質(zhì)上,F(xiàn)ormsAuthentication是用機(jī)器碼 machine key(在 machine.config 中)來加密票據(jù)FormsAuthenticationTicket的。我們使用 UserData 存儲用戶角色,并且生成一個(gè)新的憑證。一旦憑證已經(jīng)創(chuàng)建,它會被添加到當(dāng)前上下文中(即 HttpContext),用它來取回用戶角色。

2.4 設(shè)置web.config文件,限制對特定目錄的訪問

要實(shí)現(xiàn)安全認(rèn)證,在 Web應(yīng)用程序根目錄下的 Web.config 文件中找到 節(jié)點(diǎn)下的,把它修改為

上面的 name=\"AMUHOUSE.ASPXAUTH\" 中,AMUHOUSE.ASPXAUTH 這個(gè)名稱是任意的。要控制用戶或者用戶組的權(quán)限,Web.config應(yīng)該添加有下面的內(nèi)容(或者類似的內(nèi)容):

至此,已經(jīng)為系統(tǒng)配置了基于角色的安全認(rèn)證機(jī)制了。我們可以先編譯程序,然后嘗試訪問一個(gè)機(jī)密目錄,例如 http://localhost/Admin/default.aspx ,這時(shí)候系統(tǒng)就會被轉(zhuǎn)向到用戶登錄頁面。如果登錄成功,并且你的角色對這個(gè)目錄有訪問權(quán)限(如:使用zxm用戶),就可重新回到這個(gè)目錄下。如果有用戶(或入侵者)企圖進(jìn)入機(jī)密目錄,可以使用一個(gè) Session 來存儲用戶登錄的次數(shù),超過一定次數(shù)就禁止登錄,并且顯示\"系統(tǒng)拒絕了你的登錄請求!\"。通過ASP.NET基于角色的窗體安全認(rèn)證機(jī)制,按以上方法就可實(shí)現(xiàn)不同角色用戶訪問不同目錄下的程序,大大加強(qiáng)了系統(tǒng)的安全性。

3 防止SQL注入攻擊確保數(shù)據(jù)庫的安全

SQL注入攻擊是威脅Web系統(tǒng)安全常見問題之一,我院的教學(xué)管理信息平臺自運(yùn)行以來就受到過數(shù)次SQL注入攻擊,嚴(yán)重威脅SQL Server數(shù)據(jù)庫的安全。經(jīng)過不斷的調(diào)整和改進(jìn),取得較好效果,總體方案如下:

3.1 在系統(tǒng)中嚴(yán)格區(qū)分不同帳戶的權(quán)限

1)嚴(yán)格劃分出教學(xué)管理信息平臺中使用數(shù)據(jù)庫的權(quán)限。第一類:對數(shù)據(jù)庫表僅具有SELECT權(quán)限,權(quán)限最低,如教學(xué)資源信息的查詢功能程序;第二類:只對某個(gè)數(shù)據(jù)庫表的部分字段有UPDATE權(quán)限,沒有INSERT和DELETE權(quán)限, 如學(xué)生自己修改學(xué)生基本信息的部分內(nèi)容;第三類:只具有對某幾個(gè)數(shù)據(jù)庫表的INSERT和UPDATE權(quán)限,沒有DELETE權(quán)限,如學(xué)生評教信息錄入;第四類:對表具有所有操作權(quán)限,如系統(tǒng)管理員。

2)創(chuàng)建相對應(yīng)的數(shù)據(jù)庫用戶。根據(jù)以上分析,給系統(tǒng)的數(shù)據(jù)庫建立與程序功能相對應(yīng)的多個(gè)數(shù)據(jù)庫用戶,并且設(shè)置好每個(gè)用戶所操作的數(shù)據(jù)庫對象。

3)在web.config文件中創(chuàng)建數(shù)據(jù)庫連接串。在Web.config文件中建立數(shù)據(jù)庫連接串,不同的功能使用不同的數(shù)據(jù)庫連接串,連接串與數(shù)據(jù)庫用戶一一對應(yīng),如圖2所示。

通過權(quán)限細(xì)致的劃分,并且禁止sa用戶的使用,系統(tǒng)的安全性大大提高,實(shí)踐證明,經(jīng)過這種方法處理,原來受到攻擊的地方也已得以安全保護(hù)。

3.2 采用專門程序嚴(yán)格驗(yàn)證和過濾用戶輸入的信息

進(jìn)行SQL注入攻擊者往往利用系統(tǒng)與用戶交互的過程中,可以在表單輸入信息,也可以在URL處輸入信息的機(jī)會進(jìn)行SQL語句注入攻擊,因此,我們只要嚴(yán)格過濾用戶在表單或URL處輸入的信息,這樣可大大降低SQL注入的風(fēng)險(xiǎn),詳細(xì)方法如下:

1)創(chuàng)建(或修改)Global.asax文件。Global.asax文件(也稱作ASP.NET應(yīng)用程序文件)是可選文件,包含用于響應(yīng)ASP.NET或HttpModule引發(fā)的應(yīng)用程序級別事件的代碼。Global.asax文件駐留在基于ASP.NET的應(yīng)用程序的根目錄中。在運(yùn)行時(shí),分析Global.asax文件并將其編譯到一個(gè)動態(tài)生成的.NET Framework類,該類是從HttpApplication基類派生的。Global.asax文件本身被配置為自動拒絕對它的任何直接URL請求;外部用戶無法下載或查看在該文件中編寫的代碼。正是利用Global.asax文件的這個(gè)特點(diǎn),我們在它下面加上以下代碼:

private void StartProcessRequest() //在void Application_BeginReques中運(yùn)行

if (System.Web.HttpContext.Current.Request.QueryString != 1)

{

for (int i = 0; i < System.Web.HttpContext.Current.Request.QueryString.Count; i++)

{

getkeys = System.Web.HttpContext.Current.Request.QueryString.Keys[i];

if (!ProcessSqlStr(System.Web.HttpContext.Current.Request.QueryString[getkeys]))

{

System.Web.HttpContext.Current.Response.Redirect(sqlErrorPage);

System.Web.HttpContext.Current.Response.End();

}

}

}

if (System.Web.HttpContext.Current.Request.Form != 1)

{

for (int i = 0; i < System.Web.HttpContext.Current.Request.Form.Count; i++)

{

getkeys = System.Web.HttpContext.Current.Request.Form.Keys[i];

if (getkeys == \"__VIEWSTATE\") continue;

if (!ProcessSqlStr(System.Web.HttpContext.Current.Request.Form[getkeys]))

{

System.Web.HttpContext.Current.Response.Redirect(sqlErrorPage);

System.Web.HttpContext.Current.Response.End();

……

private bool ProcessSqlStr(string Str)

{

bool ReturnValue = true;

try

{

if (Str.Trim() != \"\")

{

string SqlStr = \"and|exec|insert|select|delete|update|count|*|chr|mid|master|truncate|char|declare\";//這些關(guān)鍵詞還可根據(jù)實(shí)地情況繼續(xù)添加

string[] anySqlStr = SqlStr.Split('|');//聲明“|”為分隔的字符

foreach (string ss in anySqlStr)

{

if (Str.ToLower().IndexOf(ss) >= 0)

{

ReturnValue = 1;

break;

……只要把包含以上程序的Global.asax文件放在站點(diǎn)根目錄下,站點(diǎn)內(nèi)的所有程序文件在運(yùn)行后,無論是在表單內(nèi)還是在URL處輸入類似delete的關(guān)鍵字都會出現(xiàn)文件error.aspx定義的警告提示,從而防止SQL注入攻擊。

3.3 所有對SQL SERVER數(shù)據(jù)庫操作的程序都基于存儲過程運(yùn)行

把SQL語句直接套在ASP.NET程序代碼中實(shí)現(xiàn)對數(shù)據(jù)庫的操作,就必須給數(shù)據(jù)庫連接用戶賦予SELECT、UPDATE、INSERT或DELETE等權(quán)限,這樣很容易受到SQL注入攻擊。如果改為基于存儲過程操作數(shù)據(jù)庫,連接數(shù)據(jù)庫的用戶只要對存儲過程有執(zhí)行權(quán)限就可,不需要具備直接操作數(shù)據(jù)庫表的權(quán)限,同時(shí),輸入?yún)?shù)經(jīng)過存儲過程的過濾,這樣大大增強(qiáng)了系統(tǒng)的安全性。

4 結(jié)束語

基于角色的窗體安全認(rèn)證機(jī)制實(shí)現(xiàn)程序的訪問安全、防止SQL注入攻擊實(shí)現(xiàn)數(shù)據(jù)的安全、通過存儲過程操作數(shù)據(jù)庫加強(qiáng)數(shù)據(jù)庫的安全,這些都是針對ASP.NET和SQL Server 2005構(gòu)建的信息系統(tǒng)有效的技術(shù)方案,在我院的教學(xué)管理信息平臺中推廣應(yīng)用后,系統(tǒng)安全性大大加強(qiáng),這些技術(shù)方案具有較強(qiáng)的實(shí)用推廣價(jià)值。

參考文獻(xiàn):

[1] Microsoft Corporation.Web安全威脅與對策[EB/OL].http://msdn.microsoft.com/zh-cn/library/aa302418.aspx.

[2] Microsoft Corporation.Web安全解決方案一覽[EB/OL].http://msdn.microsoft.com/zh-cn/library/ms994913.aspx.

[3] Microsoft Corporation. Web應(yīng)用程序威脅建模一覽[EB/OL].http://msdn.microsoft.com/zh-cn/library/ms978523.aspx.

主站蜘蛛池模板: 中文字幕在线播放不卡| 狠狠色噜噜狠狠狠狠奇米777 | 国产精品一老牛影视频| 日韩午夜片| 国产97公开成人免费视频| 国产精品久久久久鬼色| a级免费视频| 国产成人乱无码视频| 精品久久久久久成人AV| 久久精品66| 欧美亚洲网| 欧美激情视频一区| 亚洲无码不卡网| 亚洲国产精品人久久电影| 青青草国产一区二区三区| 国产成人8x视频一区二区| 亚洲成人在线免费| 免费国产小视频在线观看| 9啪在线视频| 日韩国产精品无码一区二区三区| yjizz视频最新网站在线| 亚洲一区二区三区在线视频| 好久久免费视频高清| 亚洲一本大道在线| 91丝袜美腿高跟国产极品老师| 国产精品久久久久久搜索| 国产在线精彩视频二区| 日韩久草视频| 婷婷丁香在线观看| 国产欧美视频在线观看| 精品国产成人三级在线观看 | 久久大香香蕉国产免费网站 | 欧美激情,国产精品| 一本大道东京热无码av| 久久精品这里只有精99品| 亚洲国产综合精品中文第一| 中文字幕亚洲专区第19页| 色天天综合| 亚洲日本在线免费观看| www精品久久| 中文字幕在线永久在线视频2020| 青青草a国产免费观看| 久久婷婷六月| 国产地址二永久伊甸园| 国产情侣一区| 欧美一区精品| 中美日韩在线网免费毛片视频| 69av免费视频| 国产精品成人第一区| 久久这里只有精品国产99| 欧日韩在线不卡视频| 国产毛片不卡| 国产精品一区在线麻豆| 亚洲色图另类| 久久一色本道亚洲| 在线va视频| 亚洲综合精品香蕉久久网| 免费jizz在线播放| 国产真实乱子伦视频播放| 伊人五月丁香综合AⅤ| 亚洲成年人片| 国产99视频精品免费观看9e| 在线无码九区| 就去吻亚洲精品国产欧美| 黄色免费在线网址| 国产免费黄| 很黄的网站在线观看| 97国产成人无码精品久久久| 久久国产精品国产自线拍| 中文字幕佐山爱一区二区免费| 九九久久99精品| 激情五月婷婷综合网| 婷婷亚洲综合五月天在线| 国产一级在线播放| 无码视频国产精品一区二区| 国产福利大秀91| 亚洲欧美在线看片AI| 99久久人妻精品免费二区| 五月六月伊人狠狠丁香网| 青青草原国产一区二区| 亚洲精品无码高潮喷水A| 色天天综合|