我们知道,我们在查询数据库的时候,经常要带一些条件去查询数据库,
这些条件来源都来自客户端用户请求,如果,客户端带有恶意的字符串,
请求到我们服务器,就形成了一个拼接好的sql语句了,
从而,就可能形成sql注入了
Parameters可以有效的防止sql注入,我们知道Parameters是怎么做到的呢?也就是怎么实现的呢??
下面是一个c#的代码:
- public static int login(string name, string pwd)
- {
- connOpen();
- cmd = new SqlCommand("select count(*) from tb_user where Name =@loginName and PassWd=@loginPasswd", conn);
- cmd.Parameters.Add(new SqlParameter("@loginName", SqlDbType.NVarChar, 50));
- cmd.Parameters["@loginName"].Value = name;
- cmd.Parameters.Add(new SqlParameter("@loginPasswd", SqlDbType.NVarChar, 50));
- cmd.Parameters["@loginPasswd"].Value = pwd;
- int i = (int)cmd.ExecuteScalar();
- conn.Close();
- return i;
- }
复制代码
随便从网上找的一段代码,我们来看一下,在数据库生成什么代码:
- exec sp_executesql N'select count(*) from tb_user where Name =@loginName and PassWd=@loginPasswd',N'@loginName nvarchar(50),@loginPasswd nvarchar(50)',@loginName=N'u',@loginPasswd=N'p'
复制代码
https://msdn.microsoft.com/zh-cn/library/ms188001.aspx
上面链接是微软官方对sp_executesql的介绍。
|