防止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
- 六個建議防止SQL隱碼攻擊式攻擊SQL
- ASP上兩個防止SQL隱碼攻擊式攻擊FunctionSQLFunction
- PHP中該怎樣防止SQL隱碼攻擊?PHPSQL
- 防止web專案中的SQL隱碼攻擊MUHEWebSQL
- 怎樣在網站中防止SQL隱碼攻擊?網站SQL
- SQL隱碼攻擊SQL
- 如何防止SQL隱碼攻擊?網路安全防禦方法SQL
- 預編譯SQL為什麼能夠防止SQL隱碼攻擊編譯SQL
- 【SQL Server】--SQL隱碼攻擊SQLServer
- 反恐精英之動態SQL和SQL隱碼攻擊-SQL隱碼攻擊-SQL隱碼攻擊技術-語句注入SQL
- 反恐精英之動態SQL和SQL隱碼攻擊-SQL隱碼攻擊-SQL隱碼攻擊技術-語句修改SQL
- MYSQL SQL隱碼攻擊MySql
- 【SQL隱碼攻擊原理】SQL
- SQL隱碼攻擊(一)SQL
- 反恐精英之動態SQL和SQL隱碼攻擊-SQL隱碼攻擊SQL
- 反恐精英之動態SQL和SQL隱碼攻擊-SQL隱碼攻擊-防衛SQL隱碼攻擊-驗證檢查SQL
- 反恐精英之動態SQL和SQL隱碼攻擊-SQL隱碼攻擊-防衛SQL隱碼攻擊-繫結變數SQL變數
- SQL隱碼攻擊原理是什麼?如何防範SQL隱碼攻擊?SQL
- 反恐精英之動態SQL和SQL隱碼攻擊-SQL隱碼攻擊-防衛SQL隱碼攻擊-顯式格式化模型SQL模型
- 反恐精英之動態SQL和SQL隱碼攻擊-SQL隱碼攻擊-SQL隱碼攻擊技術-資料型別轉換SQL資料型別
- SQL隱碼攻擊式攻擊掃描器SQL
- SQL隱碼攻擊語句SQL
- pikachu-SQL隱碼攻擊SQL
- SQL隱碼攻擊導圖SQL
- SQL隱碼攻擊問題SQL
- SQL隱碼攻擊的例子SQL
- ZMLCMS-SQL隱碼攻擊SQL
- SQL隱碼攻擊演練SQL
- 預防SQL隱碼攻擊SQL
- 在Linux中,如何檢測和防止SQL隱碼攻擊和跨站指令碼(XSS)攻擊?LinuxSQL指令碼
- DVWA-SQL Injection(SQL隱碼攻擊)SQL
- 攻擊JavaWeb應用[3]-SQL隱碼攻擊[1]JavaWebSQL
- 攻擊JavaWeb應用[4]-SQL隱碼攻擊[2]JavaWebSQL
- 【網路安全】什麼是SQL隱碼攻擊漏洞?SQL隱碼攻擊的特點!SQL
- SQL隱碼攻擊關聯分析SQL
- SQL隱碼攻擊-堆疊注入SQL
- XSS與SQL隱碼攻擊SQL