最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

攻擊方式學(xué)習(xí)之SQL注入(SQL Injection)第3/3頁

 更新時間:2008年09月06日 12:34:30   作者:  
有些網(wǎng)站將直接拿用戶的輸入 來拼接SQL語句,進行查詢等操作,同時也將錯誤信息暴露給用戶。

探測
非常簡單,輸入一個單引號('),看頁面是否出錯,要是頁面出錯了,而且又將錯誤信息暴露給你了那就太好了。
從錯誤信息中觀察確定是哪種數(shù)據(jù)庫,比如Access,SQL Server等。不同數(shù)據(jù)庫的SQL語句有些差別
靜態(tài)代碼分析,從代碼中檢查SQL語句是否是由字符串拼接而成。

實施方式
詳見示例網(wǎng)站

危害
變態(tài)性的,服務(wù)器被遠程控制,想干嘛干嘛。
盜取性的,盜取了數(shù)據(jù)庫中的機密信息,謀取私利或其他。
破壞性的,直接破壞數(shù)據(jù)庫。
修改性的,篡改數(shù)據(jù),比如通過大學(xué)成績查詢修改成績。
我也沒干過,想不出來了。

防范
在示例中也說明了如何防范,在這里再精煉一下所謂的防止SQL注入四大法寶:

最小權(quán)限原則
特別是不要用dbo或者sa賬戶,為不同的類型的動作或者組建使用不同的賬戶,最小權(quán)限原則適用于所有與安全有關(guān)的場合。
在服務(wù)器端對用戶輸入進行過濾
我 們要對一些特殊字符,比如單引號,雙引號,分號,逗號,冒號,連接號等進行轉(zhuǎn)換或者過濾;使用強數(shù)據(jù)類型,比如你需要用戶輸入一個整數(shù),就要把用戶輸入的 數(shù)據(jù)轉(zhuǎn)換成整數(shù)形式;限制用戶輸入的長度等等。這些檢查要放在server運行,client提交的任何東西都是不可信的。
以安全的方式創(chuàng)建SQL語句
不要再用萬惡的字符串拼接SQL語句了,使用Parameter對象吧,比如C#中的:
復(fù)制代碼 代碼如下:

string sqlText = "select * from [Users] where UserName = @Name";
SqlParameter nameParm = new SqlParameter("Name", uname);
sqlCmd.CommandText = sqlText;
sqlCmd.Parameters.Add(nameParm);

錯誤信息不要暴露給用戶
當(dāng)sql運行出錯時,不要把數(shù)據(jù)庫返回的錯誤信息全部顯示給用戶,錯誤信息經(jīng)常會透露一些數(shù)據(jù)庫設(shè)計的細節(jié)。

特別注意:也許有很多人告訴過你使用存儲過程能免受SQL注入攻擊。這是錯的!這只能阻止某些種類的攻擊。比如存在sp_GetName存儲過程,我們的代碼如下:
復(fù)制代碼 代碼如下:

string name = ...; //name from user
SqlConnection conn = new SqlConnection(...);
conn.Open();
string sqlString = @"exec sp_GetName '" + name + "'";
SqlCommand cmd = new SqlCommand(sqlString, conn);

我們試圖輸入"Black' or 1=1 --"將會失敗,但下面的操作卻是合法的:
exec sp_GetName 'Black' insert into Users values(2008, 'Green') -- '
參考資料
Michael Howard, David LeBlanc. "Writing Secure Code"
Mike Andrews, James A. Whittaker "How to Break Web Software"
http://www.secnumen.com/technology/anquanwenzhai.htm

相關(guān)文章

最新評論

封丘县| 岑溪市| 阿坝县| 嘉善县| 启东市| 富宁县| 石棉县| 元氏县| 濉溪县| 海城市| 黄骅市| 天全县| 沿河| 陈巴尔虎旗| 明星| 禹州市| 深水埗区| 湘西| 长兴县| 长兴县| 五原县| 山西省| 临猗县| 峨山| 庆云县| 延安市| 东台市| 桑植县| 繁昌县| 桃园县| 三都| 友谊县| 阳曲县| 新宁县| 阜阳市| 舞钢市| 江达县| 永兴县| 仁怀市| 岳普湖县| 博野县|