防止SQL隱碼攻擊
簡單的情況下,都是在前臺輸入要插入的資料,然後後臺直接把輸入的資料連線到SQL語句上,就很容易遭到SQL隱碼攻擊的問題。
比如:
string sql=”insert into category(name) values(‘ ”+name+” ’)"; //這樣的資料輸入是通過雙引號進行的字串拼接"+字串
注入語句:aaa’)delete category where-- //--表示,--後面的程式碼被註釋掉後,就不執行了
而在單獨的SQL語句中:insert into category(name) values(‘aaa’)
insert into category(name) values(‘aaa’)delete category where--')
若要防止SQL隱碼攻擊,可以使用帶引數的@字串,表示引數而不是字串;
string sql=”insert into category(name) values(@caName)"; //去掉@caName外面本來的單引號
接下來時賦值給@caName:
SqlCommand.Parameters.Add(new SqlParameter ("@caName “,"jazyzheng"));//把jazyzheng賦值到引數caName中
重新賦值為SQL隱碼攻擊語句:
SqlCommand.Parameters.Add(new SqlParameter ("@caName “,"aaa’)delete category where--"));
當在前臺輸入資料後(aaa’)delete category where--),資料是通過引數傳入的,而不是通過直接的字串拼接方式傳入,所以輸入的資料會直接被當做引數,而不會當做字串而執行字串中的SQL語句。
有SqlCommand.Parameters.Add(),也有SqlCommand.Parameters.AddRange()。
有時候插入的SQL語句引數不止一個,比如當插入新聞的時候,就會插入諸如標題,內容,時間等多個引數。AddRange傳入的是一個陣列。
SqlCommand.Parameters.AddRange(new SqlParameter[]
{
new SqlParameter("@caName","jazyzheng ")
});
比較完整的程式碼:
public int ExecuteNonQuery(string sql, SqlParameter[] paras)
{
int res;
using (cmd = new SqlCommand(sql, GetConn()))
{
cmd.Parameters.AddRange(paras);
res = cmd.ExecuteNonQuery();
}
return res;
}
public bool Insert(string caName)
{
bool flag = false;
string sql = "update category set [name]=@caName where id=@id";//需引用using System.Data.SqlClient;
SqlParameter[] paras = new SqlParameter[]
{
new SqlParameter("@id",ca.Id),
new SqlParameter("@caName",ca.Name)
};
int res = sqlhelper.ExecuteNonQuery(sql, paras);
if (res > 0)
{
flag = true;
}
return flag;
}
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16436858/viewspace-660260/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Mybatis如何防止SQL隱碼攻擊MyBatisSQL
- 防止web專案中的SQL隱碼攻擊MUHEWebSQL
- SQL隱碼攻擊SQL
- 預編譯SQL為什麼能夠防止SQL隱碼攻擊編譯SQL
- 如何防止SQL隱碼攻擊?網路安全防禦方法SQL
- SQL隱碼攻擊方法SQL
- SQL隱碼攻擊(pikachu)SQL
- MYSQL SQL隱碼攻擊MySql
- SQL隱碼攻擊原理是什麼?如何防範SQL隱碼攻擊?SQL
- 在Linux中,如何檢測和防止SQL隱碼攻擊和跨站指令碼(XSS)攻擊?LinuxSQL指令碼
- SQL隱碼攻擊總結SQL
- pikachu-SQL隱碼攻擊SQL
- XSS與SQL隱碼攻擊SQL
- SQL隱碼攻擊導圖SQL
- SQL隱碼攻擊語句SQL
- DVWA-SQL Injection(SQL隱碼攻擊)SQL
- 【網路安全】什麼是SQL隱碼攻擊漏洞?SQL隱碼攻擊的特點!SQL
- 攻擊JavaWeb應用[4]-SQL隱碼攻擊[2]JavaWebSQL
- 攻擊JavaWeb應用[3]-SQL隱碼攻擊[1]JavaWebSQL
- Nacos Derby SQL隱碼攻擊漏洞SQL
- MSSQL SQL隱碼攻擊 總結SQL
- Oracle SQL隱碼攻擊 總結OracleSQL
- SQL隱碼攻擊關聯分析SQL
- SQL隱碼攻擊基礎原理SQL
- SQL隱碼攻擊-堆疊注入SQL
- 【網路安全入門】SQL隱碼攻擊是什麼?SQL隱碼攻擊危害有哪些?SQL
- 前端如何預防SQL隱碼攻擊?前端SQL
- SQL隱碼攻擊——時間盲注SQL
- SQL隱碼攻擊基礎入門SQL
- Mura CMS processAsyncObject SQL隱碼攻擊漏洞ObjectSQL
- SQL隱碼攻擊:Sqlmap初體驗SQL
- SQL隱碼攻擊速查表(上)SQL
- 預防SQL隱碼攻擊筆記SQL筆記
- SQL隱碼攻擊及如何解決SQL
- 什麼是SQL隱碼攻擊(SQLi)SQL
- SQL隱碼攻擊讀寫檔案SQL
- WEB三大攻擊之—SQL隱碼攻擊與防護WebSQL
- SQL隱碼攻擊原理及程式碼分析(二)SQL
- SQL隱碼攻擊原理及程式碼分析(一)SQL