--------------------- 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 表 不同型別的資料放到不同的格仔中,將這種區域叫做表。不同...