




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第8講數(shù)據(jù)庫程序的安全性設(shè)計(jì)事務(wù)系統(tǒng)分析數(shù)據(jù)庫設(shè)計(jì)UI設(shè)計(jì)數(shù)據(jù)庫連接數(shù)據(jù)庫查詢離線數(shù)據(jù)管理安全性設(shè)計(jì)XML數(shù)據(jù)交換程序發(fā)布部署課程內(nèi)容目錄1,身份認(rèn)證2,口令加密3,基于角色的授權(quán)4,防范SQL注入攻擊1,身份認(rèn)證身份認(rèn)證的意思是:確定你就是你所聲稱的你。一般做法是,在數(shù)據(jù)庫中設(shè)計(jì)用戶表,存放用戶登錄號(hào)與密碼。用戶進(jìn)入系統(tǒng)之前,輸入登錄號(hào)和密碼,系統(tǒng)將輸入數(shù)據(jù)與用戶表中的數(shù)據(jù)進(jìn)行匹配。從而驗(yàn)證身份。1,身份認(rèn)證以BookStore系統(tǒng)為例,在BookStore數(shù)據(jù)庫中設(shè)計(jì)表TUser,結(jié)構(gòu)如下:列類型UserIdnchar(10)pkUserNamenchar(10)notnullpwdnchar(10)notnullTUser在FrmMain中,改寫FrmMain_Load方法
privatevoidFrmMain_Load(objectsender,EventArgse){FrmLogonfrmLogon=newFrmLogon();frmLogon.ShowDialog();}在應(yīng)用程序中增加一個(gè)登錄窗體FrmLogon,設(shè)計(jì)效果如下://退出privatevoidbtnExit_Click(objectsender,EventArgse){Application.Exit();}//登錄privatevoidbtnLogon_Click(objectsender,EventArgse){boolloginSuccess;Dac.Conn.Open();SqlCommandcmd=Dac.Conn.CreateCommand();cmd.CommandText="Select*FromTUserWhereuid='"+txtUserId.Text+"'";SqlDataReaderdr=cmd.ExecuteReader();if(!dr.Read()){MessageBox.Show("無此用戶");}elseif(txtPwd.Text!=dr["Pwd"].ToString()){MessageBox.Show("口令錯(cuò)誤");}else{loginSuccess=true;}dr.Close();Dac.Conn.Close();if(loginSuccess){this.Close();}}2.口令加密數(shù)據(jù)庫中,用戶的口令一般不用明文存放,加密的方法通常采用MD5算法。步驟:原始口令通過MD5計(jì)算散列值,散列值存放在數(shù)據(jù)庫中以后輸入的口令計(jì)算散列值,與數(shù)據(jù)庫里的存放的散列值比較,相符則口令正確。2,口令加密例:MD5算法加密口令usingSystem;usingSystem.Security.Cryptography;usingSystem.Text;usingSystem.Security;//將一個(gè)明文用MD5算法加密publicstringGetMD5Hash(stringstrSource){//取得輸入字符串的字節(jié)數(shù)組byte[]data=Encoding.Unicode.GetBytes(strSource);//一個(gè)MD5加密對(duì)象MD5CryptoServiceProvidermd5=newMD5CryptoServiceProvider();//用MD5加密對(duì)象對(duì)字節(jié)數(shù)組加密,得到字節(jié)數(shù)組byte[]hash_byte=md5.ComputeHash(data);//將加密后的字節(jié)數(shù)組轉(zhuǎn)換為字符串stringresult=System.BitConverter.ToString(hash_byte);returnresult;}口令加密例:MD5算法檢驗(yàn)輸入的口令
publicboolvalidateInput(stringinput,stringpwd){byte[]data=Encoding.Unicode.GetBytes(input);MD5CryptoServiceProvidermd5=newMD5CryptoServiceProvider();byte[]hash_byte=md5.ComputeHash(data);stringresult=System.BitConverter.ToString(hash_byte);//比較if(result==pwd){returntrue;}else{returnfalse;}}3,基于角色的授權(quán)多用戶應(yīng)用程序,不同用戶具有不同功能模塊的操作權(quán)限。由于用戶數(shù)可能很大,為每一個(gè)用戶指定權(quán)限不合適。采用基于角色的權(quán)限控制方法可以簡(jiǎn)化這一問題,即將用戶設(shè)置成不同的角色,不同的角色具有不同的權(quán)限。以BookStore為例,在BookStore數(shù)據(jù)庫中增加一個(gè)表TRole列名類型約束Rolenchar(10)Pk圖書管理bit讀者管理bit丟書賠付bit統(tǒng)計(jì)分析bitTRole為Role輸入一些初始值Role圖書管理讀者管理丟書賠付統(tǒng)計(jì)分析管理員0001財(cái)務(wù)0010操作員1101修改TUser,增加一列Role,如下:列名類型UserIdnchar(10)pkUserNamenchar(10)notnullPwdnchar(10)notnullRolenchar(10)notnullTUser修改FrmLogon的部分代碼:增加一個(gè)屬性Role;修改checkUserIdAndPwd方法,在驗(yàn)證了Uid和Pwd后,取得Role。
publicstringRole=string.Empty;
……
if(!dr.Read()){MessageBox.Show("無此用戶");}elseif(pwd!=dr["Pwd"].ToString()){MessageBox.Show("口令錯(cuò)誤");}else{result=true;this.Role=dr["Role"].ToString();
}……修改FrmMain的部分代碼privatevoidFrmMain_Load(objectsender,EventArgse){mnuMain.Enabled=false;FrmLogonfrmLogon=newFrmLogon();frmLogon.ShowDialog();stringrole=frmLogon.Role;grant(role);//授權(quán)}//授權(quán),根據(jù)角色設(shè)置不同菜單項(xiàng)的可用性voidgrant(stringrole){mnuMain.Enabled=true;SqlCommandcmd=Dac.Conn.CreateCommand();Dac.Conn.Open();cmd.CommandText="Select*FromTRoleWhereRole='"+role+"'";SqlDataReaderdr=cmd.ExecuteReader();if(dr.Read()){if(!Convert.ToBoolean(dr["圖書管理"])){mnu圖書管理.Enabled=false;}if(!Convert.ToBoolean(dr["讀者管理"])){mnu讀者管理.Enabled=false;}if(!Convert.ToBoolean(dr["統(tǒng)計(jì)分析"])){mnu統(tǒng)計(jì)分析.Enabled=false;}if(!Convert.ToBoolean(dr[“丟書賠付”])){mnu丟書賠付.Enabled=false;}}dr.Close();Dac.Conn.Close();}4,防范SQL注入攻擊在本應(yīng)輸入數(shù)據(jù)的地方夾雜進(jìn)了SQL命令,從而控制數(shù)據(jù)庫,對(duì)系統(tǒng)構(gòu)成攻擊,稱為SQL注入攻擊。SQL注入一般用于Web應(yīng)用程序攻擊。但在WinForm中一樣可以起到攻擊作用,因此應(yīng)該采取必要防范。SQL注入實(shí)例——以BookStore登錄窗體為例程序中的查詢代碼:“Select*FromTUserWhereUserId=‘”+txtUid.Text
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 中獸醫(yī)基礎(chǔ)知到課后答案智慧樹章節(jié)測(cè)試答案2025年春黑龍江農(nóng)業(yè)工程職業(yè)學(xué)院(松北校區(qū))
- 廣東江門幼兒師范高等??茖W(xué)?!读餍形琛?023-2024學(xué)年第一學(xué)期期末試卷
- 上海第二工業(yè)大學(xué)《廣聯(lián)達(dá)軟件實(shí)訓(xùn)》2023-2024學(xué)年第一學(xué)期期末試卷
- 河北地質(zhì)大學(xué)《執(zhí)業(yè)醫(yī)師考試實(shí)踐技能培訓(xùn)》2023-2024學(xué)年第一學(xué)期期末試卷
- 關(guān)于墨汁容器造型設(shè)計(jì)問卷調(diào)查
- 外網(wǎng)排水施工方案
- 橋梁施工方案編制計(jì)劃
- 2025年中考語文一輪復(fù)習(xí):文學(xué)類文本閱讀 講義
- 天津市河西區(qū)2024-2025學(xué)年高一上學(xué)期期末質(zhì)量調(diào)查數(shù)學(xué)試題(解析版)
- 河北省邢臺(tái)市2024-2025學(xué)年高二上學(xué)期期末英語測(cè)試試題【含答案】
- 2025年度智慧養(yǎng)老服務(wù)平臺(tái)開發(fā)與運(yùn)營服務(wù)合同
- 2025年湖南科技職業(yè)學(xué)院高職單招語文2018-2024歷年參考題庫頻考點(diǎn)含答案解析
- 2025中國鐵塔甘肅分公司社會(huì)招聘60人易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 2025社區(qū)醫(yī)保工作計(jì)劃
- 2025年河南中煙工業(yè)限責(zé)任公司大學(xué)生招聘筆試高頻重點(diǎn)提升(共500題)附帶答案詳解
- 社會(huì)責(zé)任內(nèi)審評(píng)估報(bào)告表
- 農(nóng)村土地流轉(zhuǎn)合同范本
- 個(gè)人借款分期還款合同
- 道德與法治研修日志
- 船舶起重吊裝作業(yè)安全方案
- 2023年佛山市三水區(qū)樂平鎮(zhèn)鎮(zhèn)屬國有企業(yè)招聘筆試真題
評(píng)論
0/150
提交評(píng)論