C 引數化 防止SQL注入

2021-07-24 17:45:19 字數 1819 閱讀 1585

/*

* c#防止sql注入式攻擊

* author:ice frog

* time:2016/4/20

*//*

* sql注入式攻擊就是值通過sql執行語句的漏洞進行百分百匹配條件的攻擊

* 那麼在執行語句的where語句後面的條件就永遠為true

* * c#在資料庫的這一塊漏洞上新增了乙個類來處理這個問題:

* sqlparameter - using system.data.sqlclient;

* 原理就是讓where條件後面欄位不和整個執行語句化為乙個字串,而是以通過乙個引數的形式傳遞進去

* 這樣可以達到兩個效果:

* 第一就是避免注入式攻擊

* 第二就是防止非法字元導致軟體崩潰

* 那麼我們需要把原來的sql執行語句比如:string.format(「select * from user where id=』』 and pwd = 『』」,id,pwd)

* 更改為: 「select * from user where id = @id and pwd = @pwd」;

* 我們使用了@名 代替了佔位符,而這個@名 原先是不存在不需要宣告的。只需要在後面使用上面那麼類宣告一下就ok

* code:

*

sqlparameter i = new sqlparameter("@id",id);

* sqlparameter j = new sqlparameter("@pwd",pwd);

sqlcommand cmd = new sqlcommand(sql,conn);

* cmd.parameters

.add(i);

* cmd.parameters

.add(j);

*      sqldataadapter dat = new sqldataadapter(sql,conn);

* dat.selectcommand

.parameters

.add(i);

* dat.selectcommand

.parameters

.add(j);

code:

sqlconnection conn = new sqlconnection("...");

conn.open();

string sqlsentence = "select * from user where id = @id and pwd = @pwd"

; sqlparameter id = new sqlparameter("@id",value1);

sqlparameter pwd = new sqlparameter("pwd",value2);

sqlcommand cmd = new sqlcommand(sqlsentence,conn);

//sqldataadapter dat = new sqldataadapter(sqlsentence,conn);

.parameters

.add(id);

.parameters

.add(pwd);

cmd.parameters

.add(id);

cmd.parameters

.add(pwd);

object obj = cmd.executescalar();

conn.close();

C 引數化 防止SQL注入

c 防止sql注入式攻擊 author ice frog time 2016 4 20 sql注入式攻擊就是值通過sql執行語句的漏洞進行百分百匹配條件的攻擊 那麼在執行語句的where語句後面的條件就永遠為true c 在資料庫的這一塊漏洞上新增了乙個類來處理這個問題 sqlparameter u...

C 引數化 防止SQL注入

分類專欄 c c 防止sql注入式攻擊 author ice frog time 2016 4 20 sql注入式攻擊就是值通過sql執行語句的漏洞進行百分百匹配條件的攻擊 那麼在執行語句的where語句後面的條件就永遠為true c 在資料庫的這一塊漏洞上新增了乙個類來處理這個問題 sqlpara...

C 引數化 防止SQL注入

2018年08月08日 16 12 43 one piece fu 閱讀數 968更多 分類專欄 c c 防止sql注入式攻擊 author ice frog time 2016 4 20 sql注入式攻擊就是值通過sql執行語句的漏洞進行百分百匹配條件的攻擊 那麼在執行語句的where語句後面的條...