为什么使用ADO能根本杜绝SQL注入?


SQL注入的危害不用我说,由于对URL输入参数过滤不严造成的,为什么使用ADO连接对象能够杜绝呢?

网络安全 漏洞挖掘 数据库设计

工口-SOL 12 years, 10 months ago

ADO和PDO、JDBC一样并不提倡你直接用变量值拼接SQL,如下的写法是不被推荐的:

   
  “select * from table where f = ”. $abc
 

而是提倡另一种写法,写个C#写法:

   
  string strSql = "select * from table where f = @f";
  
OleDbCommand cmd = new OleDbCommand(strSql,Conn);
cmd.Parameters.Add("@f", OleDbType.VarChar).Value = abc;

所以并不是使用ADO就杜绝了,而是ADO帮你完成SQL的拼接,在处理参数的过程中已经帮你进行了有效的过滤,如果仍然是手写的SQL,即便ADO也不能避免SQL注入

狂暴黑岩舒 answered 12 years, 10 months ago

Your Answer