可以做渐变色块拼接的网站,大连响应式网站,织梦建公司网站,上海闵行区SQL注入漏洞是个老话题了#xff0c;在以前做ASP做开发时#xff0c;就经常需要用字符串的过虑等方式来解决这个问题#xff0c;但有时候确做的不够彻底#xff0c;往往让***钻了空子。那么目前在我们.NET中#xff0c;不管是用WINFORM开发还是用WEBFORM#xff0c;连接数… SQL注入漏洞是个老话题了在以前做ASP做开发时就经常需要用字符串的过虑等方式 来解决这个问题但有时候确做的不够彻底往往让***钻了空子。 那么目前在我们.NET中不管是用WINFORM开发还是用WEBFORM连接数据库时都 可以使用ADO.NET在ADO.NET中可以设置和获取命令对象的参数来有效的防止SQL 注入问题。不过在网上查看很多有关ASP.NET的防注入贴子中还有很多是使用以前的 老办法字符串的过虑在这里我们再给大家推荐使用ADO.NET中的参数集合这种方 式希望能对各位有所帮助。 首先我们来了解一下SQL注入漏洞 SQL注入就是用户通过客户端请求GET或POST方式将SQL语句提交到服务端欺骗服务 器去执行恶意的SQL语句。比如 做一个用户的登录的SQL语句 string strSql Select * From Users Where UserNamename and UserPwd pwd ; 如果在登录时输入or 11这样的内容的话name和pwd的值就会跟着改变那我们来看 下这条SQL语句 SELECT * from Users WHERE UserName or 11 AND UserPwd or 11 这样的话可以直接查出记录那自然就会登录成功这样的程序简直是不设防的 当然SQL注入漏洞还有很多方式我们就不在这里详细表述我们的主题是如何 在.NET的ASP.NET或WINFROM中使用ADO.ENT来解决这个问题。 问题的解决办法 还是我们刚刚的Users表现在我要写个方法为该表里插入记录如下 public int Insert(string name, string pwd) { string strSql Insert into Users(UserName,UserPwd)values(name,pwd); OleDbCommand cmd new OleDbCommand(strSql,Conn); Conn.Open(); int icmd.ExecuteNonQuery(); Conn.Close(); return i; } 以上的方法中就存在SQL注入的问题那么如何使用ADO.NET中的叁数集合呢 接下来再看一段代码 public int Insert(string name, string pwd) { string strSql Insert into Users(UserName,UserPwd)values(name,pwd); OleDbCommand cmd new OleDbCommand(strSql,Conn); cmd.Parameters.Add(name, OleDbType.VarChar).Value name; cmd.Parameters.Add(pwd, OleDbType.VarChar).Value pwd; Conn.Open(); int icmd.ExecuteNonQuery(); Conn.Close(); return i; } 以上的方法中使用了参数集合这样的话就有效的避免了SQL的注入问题接下来我们了解一下参数集合 在ADO.NET的命令对象中是可以使用参数集合的如例如 该集合中包含一组类型为 、、 或 的对象。对于需要传递的每个参数集合中均有一个对应的参数对象。 参数的数据类型特定于 .NET Framework 数据提供程序。 如果指定类型则会在将 Parameter 的值传递给数据源之前将该值转换为 .NET Framework 数据提供程序类型。 您还可以通用形式指定 Parameter 的类型方法是将 Parameter 对象的 DbType 属性设置为特定 。 Parameter 对象的 .NET Framework 数据提供程序类型是根据 Parameter 对象的 Value 的 .NET Framework 类型或 Parameter 对象的 DbType 推断出来的。 有的朋友可能想要知道如何在DataAdapter对象中使用参数其实也可以用Parameter 来做为参数做法如下 public DataTable List(int id) { string strSqlSelect * From Users Where idid; OleDbCommand cmd new OleDbCommand(strSql,Conn); cmd.Parameters.Add(id, SqlDbType.int).Value id; OledbDataAdapter da new OledbDataAdapter(cmd); DataTable dt new DataTable(); da.Fill(dt); retrun dt; } 关于这方面的问题和Parameter 的使用方式有很多我们这里只是举了个简单的例子让大家加以应用。 转载于:https://blog.51cto.com/jianle/131754