C 引數化查詢資料庫防注入

2021-05-27 16:14:07 字數 863 閱讀 6823

採用sqlclient方式連線資料庫:         

1;string

name="

lui"

;//語句中直接在sql語句中寫新增的引數名,不論引數型別都是如此.

sqlcommand cmd = new sqlcommand("",connection1);

cmd.commandtext="

insert into tuserlogin values(@id,@name)";

cmd.parameters.clear();

cmd.parameters.add("

@id"

,sqldbtype).value =id;

cmd.

parameters.add(

"@name

",sqldbtype.varchar

).value = name;

cmd.executenonquery();

引數化的意義在於把對應的值從引數中提供,對於like語句,like後面的值則包括了單引號中的所有部分,包括百分號(%),因此在引數化like對應的值時,應該把百分號移到引數值中提供,像這樣:

cmd.parameters["@keyword"].value = "%" + strkeyword + "%";

可別奢想在sql語句中像這樣的樣子:

select * from [tablename] where [column1] like '%@keyword%'

不會報錯,不過你不可能查詢到想要的結果。

namespace

}console

.readkey();

//防止控制台程式一閃而過、而看不到輸出結果}}

}

c 針對不同資料庫進行引數化查詢

使用引數化 dbcommand 的乙個缺點是需要引數的 將僅適用於支援相同語法的提供程式。oledb sqlclient 和 oracle 提供程式全部使用不同的語法。例如,用於命名和指定引數的 sql 語法使用 符號,oledb 引數語法需要使用問號 作為引數佔位符,而 oracle 提供程式使用...

通過HttpModule實現資料庫防注入

昨天剛把資料庫防注入的原型發了上去,發覺好像還漏了點東西,現在把它全部補上.sql注入是常常被一些菜鳥級黑客高手慣用的手法,就是基於sql的注入實現,防注入程式其實就是處理http請求,把get和post的請求資料中做過濾.通過相應的關鍵字去識別是否有 sql注入攻擊 string sqlstr a...

防SQL注入 生成引數化的通用分頁查詢語句

前些時間看了玉開兄的 如此高效通用的分頁儲存過程是帶有sql注入漏洞的 這篇文章,才突然想起某個專案也是使用了累似的通用分頁儲存過程。使用這種通用的儲存過程進行分頁查詢,想要防sql注入,只能對輸入的引數進行過濾,例如將乙個單引號 轉換成兩個單引號 但這種做法是不安全的,厲害的黑客可以通過編碼的方式...