亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 編程設計 > 正文

預防查詢語句數據庫注入漏洞攻擊

2020-07-14 13:33:36
字體:
來源:轉載
供稿:網友

簡單地說,Sql注入就是將Sql代碼傳遞到應用程序的過程,但不是按照應用程序開發人員預定或期望的方式插入,相當大一部分程序員在編寫代碼的時候,并沒有對用戶輸入數據的合法性進行判斷,使應用程序存在安全隱患。這種漏洞并非系統照成,而是由程序員在編程中忽略了安全因素。Sql注入漏洞攻擊原理就是利用非法參數獲得敏感信息,收集整理,分析出管理員賬號密碼。

當開發應用程序時,尤其是有關數據庫信息的查詢,查詢語句中可能會有拼接字符串注入漏洞,這便會導致用戶資料泄露。那么該如何防范此類漏洞的出現。

可以為查詢語句設置參數,方法實例如下面所示

Using(Sqlconnection cn = new sqlconnection(“連接字符串”))

{

cn.open();

using(sqlcommand cmd = cn.creatcommand())

{

cmd.commandtext=”select * from T_table where name=’”+textbox.text+”’”;

(此時如果在文本框中輸入1’ or ‘1’=’1)就可以獲取數據庫信息。會造成信息的泄露。解決辦法就是引入參數。方法如下。

cmd.commandtext=”select * from T_table where name=@Name”;

cmd.Parameters.Add (new sqlParameter ("@Name", textbox.text))};

這樣查詢數據就會從數據庫查詢比對,不會再出現注入漏洞攻擊的情況。

}

}

每一次必不可少的會寫對數據庫操作的Sql語句,例如以下驗證登陸的Sql語句:

string strSql="select * from Table Where UserName='"+textBoxUserName.Text+'"and UserPassord='"+textBoxPassword.Text+"'";
或者
string strSql=string.Format("select * from Table where UserName='{0}' and UserPassword='{1}'",textBoxUserName.Text,textBoxPassword.Text);
在上面的語句中,對數據庫操作的Sql語句使用字符串拼接的方式寫的,這種方式是前期的程序員以及初學者通用的對數據庫操作的一種Sql語句寫法,上述代碼中的textBoxUserName是用戶在textBoxUserName文本框中提交的用戶名,textUserpassword是用戶在textUserpassword文本框中提交的密碼,在理想的狀態下,用戶 為了對系統進行攻擊,用戶(就是黑客)可能嘗試篡改Sql語句,達到登錄的目的。例如用戶可能在用戶名文本框中輸入下面的語句:
1' or 1=1 --

下面我們把上面一行的語句代入到前面用于登錄的Sql語句中,得到下面的Sql語句:
select * from Table where UserId='1' or 1=1 --'and UserName=' '
稍微學過數據庫Sql語句的,很快就會發現上面一句話的不正常,這條Sql語句會返回Table表的全部數據,這就是黑客有機可乘的地方,黑客可以用這種方法成功登陸,還可以獲取該Table表的所有信息。下面解釋一下這句Sql語句:如果只有select * from Table,就會返回該Table表的所有信息,where后是查詢條件,1=1永遠為True,不管User='1'為True還是為False,UserId='1' or 1=1 都為True。至于--'and UserName=' ' ,因為兩個連字符(--)是MS Sql Server的注釋標記(My Sql和Oracle數據庫也使用相同的技術,不過My Sql使用的注釋標記師是符號#,Oracle使用的是分號;),--后面的內容傳到數據庫查詢時都被注釋了,那么--后面的內容就沒用了,Sql語句不會執行了,所以where后的查詢條件永遠為True,綜上所述,上面的Sql查詢語句會返回Table表的所有信息!

通過這種Sql語法漏洞,黑客們可以達到他們的目的,但Sql注入漏洞攻擊絕對不止這一種,復雜的還有很多,我不在說了。下面我談一下我知道在.NET中應對上面這種Sql注入攻擊的防范措施。
我們所能做的,如果不修改上面的Sql查詢語句,那一種方法就是利用TextBox控件的MaxLength屬性,這樣就鍵入了黑客鍵入字符的數量,從而可以限制黑客向服務器發送大量的非法命令,但這種方法只是掩耳盜鈴,治不了根本。第二種方法就是刪除用戶輸入中的單引號,方法是在單引號后面加一個或多個單引號,或者利用空格替換單引號,這樣就可以預防此類攻擊。但局限性是如果用戶的用戶名或密碼中就含有單引號呢,那就不可行了!

最完美的一種方法就是使用ADO.NET Command對象的參數集合,在前面的可以進行Sql注入漏洞攻擊的Sql語句中,通過使用字符串拼接方法動態創建查詢,在這里我們可以利用ADO.NET Command的對象的Parameters屬性提供的功能,傳遞執行Sql語句所使用的參數,在這種方法中參數名必須以字符@為前綴,例如以下Sql查詢語句:
string strSql="select * from Table where UserName=@UserName and UserPassword=@UserPassword";
在該語句中,@UserName和@UserPassword就是參數名,可以使用以下語句為該參數傳值:
SqlCommand cmd=new SqlCommand(strSql,conn);
SqlParameters[] pams=new SqlParameters(new SqlParameters("@UserName",textBoxUserName.Text),new SqlParameters("@UserPassword",textBoxPassword.Text));
cmd.Parameters.AddRange(pams);
參數名不區分大小寫,這種方法也適宜存儲過程和SqlDataAdapter對象。

我們在動態創建Sql語句中使用了@UserName和@UserPassword名稱,而不是拼接多個字符串,這樣就可以使用SqlCommand對象的Parameters集合傳遞值,該方法可以安全的創建動態Sql連接。參數在Sql Server內部不是簡單的字符串替換,Sql Server直接0用添加的值進行數據比較,因此不會有Sql注入漏洞攻擊。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品美女www爽爽爽视频| 亚洲综合最新在线| 国产一区私人高清影院| 精品久久在线播放| 国产不卡一区二区在线播放| 一区二区在线视频播放| 中文日韩在线视频| www日韩欧美| 国产精品91在线观看| 91在线网站视频| 国产精品吊钟奶在线| 精品视频一区在线视频| 久久成人人人人精品欧| 欧美乱大交做爰xxxⅹ性3| 亚洲女人天堂色在线7777| 亚洲激情在线观看| 日韩色av导航| 亚洲高清色综合| 欧美性少妇18aaaa视频| 国产精品香蕉av| 91黑丝高跟在线| 欧美日韩国产一中文字不卡| 日韩欧美成人免费视频| 亚洲国产三级网| 欧美一区二粉嫩精品国产一线天| 一区二区在线视频播放| 国产精品wwwwww| 激情久久av一区av二区av三区| 国产精品综合不卡av| 欧美性高潮床叫视频| 亚洲理论片在线观看| 久久精品中文字幕电影| 日本久久久久久| 91精品国产精品| 久久中文字幕视频| 亚洲精品国产suv| 国产成人aa精品一区在线播放| 久久精品国产亚洲精品| 亚洲91精品在线观看| 亚洲成年人在线播放| 久久五月情影视| 久久精品中文字幕电影| 亚洲视频国产视频| 久久99精品久久久久久琪琪| 欧美www视频在线观看| 国产视频自拍一区| 97精品国产91久久久久久| 亚洲自拍中文字幕| 亚洲欧美国产日韩天堂区| 国产日韩欧美日韩| 国产亚洲一级高清| 精品自在线视频| 波霸ol色综合久久| 欧美多人乱p欧美4p久久| 国产精品福利观看| 91人成网站www| 日韩欧美中文第一页| 亚洲国产成人精品一区二区| 97在线免费观看视频| 欧美最猛性xxxxx亚洲精品| 亚洲视频在线播放| 91亚洲精品一区二区| 国产精品成人播放| 国产精品欧美日韩一区二区| 亚洲第一精品久久忘忧草社区| www.久久草.com| 亚洲国产天堂久久综合| 日韩成人在线视频网站| 国产精品xxxxx| 日本电影亚洲天堂| 亚洲sss综合天堂久久| 亚洲欧美一区二区三区情侣bbw| 亚洲精品电影网| 日韩av免费看| 久久中文字幕在线| 中文字幕亚洲综合久久筱田步美| 69**夜色精品国产69乱| 国产香蕉97碰碰久久人人| 国产精品丝袜久久久久久高清| 亚洲色图综合网| www.欧美三级电影.com| 91超碰中文字幕久久精品| 国产视频精品自拍| 国产精品中文字幕在线观看| 久久成人av网站| 中文字幕亚洲一区二区三区| 亚洲国产美女久久久久| 国产女精品视频网站免费| 国产美女精品视频免费观看| 欧美另类精品xxxx孕妇| 精品一区二区亚洲| 欧美激情videos| 欧美国产日韩一区二区三区| 亚洲国产欧美日韩精品| 992tv成人免费影院| 一夜七次郎国产精品亚洲| 久久久久久国产精品美女| 日韩在线免费视频观看| 波霸ol色综合久久| 久久99久久99精品中文字幕| 久久99青青精品免费观看| 亚洲精品视频网上网址在线观看| 久久影视免费观看| 欧美日本在线视频中文字字幕| 疯狂蹂躏欧美一区二区精品| 亚洲一区精品电影| 免费99精品国产自在在线| 精品亚洲精品福利线在观看| 久久久中文字幕| 亚洲精品456在线播放狼人| 国产精品久久久久久久午夜| www国产精品视频| 精品久久久免费| 81精品国产乱码久久久久久| 亚洲人成电影网站色…| 日本亚洲精品在线观看| 第一福利永久视频精品| 久久精品成人欧美大片古装| 成人免费视频xnxx.com| 国产精品福利网站| 国产成人jvid在线播放| 丝袜亚洲欧美日韩综合| 国产精品老牛影院在线观看| 精品一区二区三区四区在线| 亚洲一区二区久久久久久久| 国产日产欧美a一级在线| 成人黄色短视频在线观看| 国产精品色婷婷视频| 成人高清视频观看www| 国产日韩欧美电影在线观看| 热久久视久久精品18亚洲精品| 久久久精品一区| 国产国语刺激对白av不卡| 91中文在线观看| 国产精品高精视频免费| 福利一区视频在线观看| 在线看日韩欧美| 大荫蒂欧美视频另类xxxx| 日韩电视剧免费观看网站| 日本成熟性欧美| 黄色一区二区三区| 欧美一区二区三区艳史| 亚洲专区在线视频| 久久久久久国产精品三级玉女聊斋| 姬川优奈aav一区二区| 色综合色综合网色综合| 国产亚洲精品美女久久久久| 久久久国产精彩视频美女艺术照福利| 国产欧美一区二区白浆黑人| 国产91色在线播放| 日本在线观看天堂男亚洲| 亚洲黄色片网站| 91色视频在线导航| 丝袜情趣国产精品| 91精品国产色综合久久不卡98口| 精品亚洲一区二区三区四区五区| 久久精品久久久久电影| 一本色道久久综合狠狠躁篇的优点| 国产精品久久中文| 8x拔播拔播x8国产精品| 日韩国产在线播放| 亚洲白虎美女被爆操| 欧美激情视频在线| 欧美成人黑人xx视频免费观看|