黑馬程式設計師 學習筆記之SQL注入漏洞攻擊

2021-06-07 07:20:31 字數 1881 閱讀 5585

---------------------  windows phone 7手機開發

.net培訓  期待與您交流! ----------------------

1、sql注入漏洞攻擊

if(reader.read())

else

cmd.commandtext="select * from t_users where username=@username and                     password=@password";

cmd.parameters.add(sqlparameter("username","admin"));

cmd.parameters.add(sqlparameter("password","123456"));

例子1:

//輸入相關資料

console.writeline("請輸入使用者名稱:");

string username=console.readline();

console.writeline("請輸入密碼:");

string password=console.readline();

//開始連線資料庫

//否則,執行sql語句失敗

else

} }

console.writeline("ok");

console.readkey();

漏洞分析:

//主要問題出在sql語句中

"select * from t_users where username=' " +username+"' 

and password=' "+password+" ';

//當輸入這樣的引數時,

請輸入使用者名稱:

admin

請輸入密碼:

1『 or '1'='1

登入成功

ok

這表明,即使使用者名稱是正確的,而密碼是錯誤的,卻能成功登入

select * from t_users where username='admin『 

and password='1『 or '1'='1'

當執行or的後面  '1'='1' 時,即整個select語句返回的值是true,表明執行成功

因為使用or時,即使select語句的前面select * from t_users where username='admin『 

and password='1『

執行的結果是錯誤的,即false,然 

'1'='1'的運算結果是true

則整個表示式是true 的,--->  這是由於or 邏輯運算子的作用

這就是sql注入漏洞攻擊

解決方案:

防範注入漏洞攻擊的方法:不使用sql語句拼接,通過引數賦值

cmd.commandtext="select * from t_users where username=@username and                     password=@password";

cmd.parameters.add(sqlparameter("username","admin"));

cmd.parameters.add(sqlparameter("password","123456"));

說明:

---------------------  windows phone 7手機開發

.net培訓  期待與您交流! ----------------------

詳細請檢視

黑馬程式設計師 SQL注入漏洞攻擊

sql注入攻擊是黑客對資料庫進行攻擊的常用手段之一。通過字串拼接的方式,將程式中的字串變數username,password與select結合起來,如果有返回值則說明登陸成功,否則登陸失敗。因為它的驗證方式是通過字串拼接來完成的,因此我們可以在密碼框內這樣寫 1 or 1 1 顯示登入成功。下面是 ...

黑馬程式設計師 學習筆記

windows phone 7手機開發 net培訓 期待與您交流!filestream sqlconnection實現了idispose介面,用完需要被釋放掉 using sqlconnection conn new sqlconnection 用完被釋放掉了 當close後還可以再進行open,物...

黑馬程式設計師 SQL 語句學習

windows phone 7手機開發 net培訓 期待與您交流!資料庫概念 1.1 catalog 分類 不同類的資料應該放到不同的資料庫中 a 偏於對各個catalog進行個性化管理 b 避免命名衝突 c 安全性更高 1.2 table 表 不同型別的資料放到不同的格仔中,將這種區域叫做表。不同...