SQL注入解释:所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。
SQL注入原因
写SQL语句的时候会用拼接字符串的方法,所以会发生SQL注入这种问题。
SQL注入后果
如果是让别人发现了你的这个注入的漏洞的话,你的整个数据库有可能直接获得管理员的权限,也就是说这个数据库又可以能掌握在别人的手里,里面的数据想查询就查询,想删除就删除,想对你数据库怎样就怎样,后果很严重。
SQL注入解决方法:
对于SQL注入的方法最简单的也就是把拼接字符串变成一个变量,在传递的时候传递一个变量可以避免拼接字符串SQL注入接下来我用代码来简单的给大家展现一下怎样避免这个问题.(又不对的欢迎大家指出!) 这两个类需要引入才可以
//SQLhelper 类中代码:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data; using System.Data.SqlClient; using System.Configuration; Public class Sqlhelper() { Private SQLconnection conn=null; Private SQLcommend cmd=null; Public SQLhelper () { Sting connStr=”Server=服务器名;database=数据库名;uid=sa;pwd=数据库密码”; Conn=new Sqlconnection(connStr) } Private Sqlconnection conn() { Return true; } Public int ExecuteNonQuery(string sql,SqlParameter[] paras) { Int res; Using(cmd.new SqlCommand(sql,GetConn())) { Cmd.Parameters.AddRange(paras); Res=cmd.ExecuteNonQuery } Return res; } }
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data; 插入方法类代码: Public Class categoryDAO { Private Sqlhelper sqlhelper=null; Public categoryDAO() { sqlhelper=new Sqlhelper(); } Public bool insert(string caName) { Bool flag=false; String sql=”insert into 表名(字段名)values(@caName)”; SqlParameter[]paras=new SqlParameter[]{ New Sqlparameter(”@caName”,caName) } Int res=sqlhelper.executeNonQuery(sql,paras); If(res>0) { Flag=true } Return flag } }
总结:
上面是代码,写的也就是用一个@caName的变量来替换一下拼接的Sql语句,还有在用@caName变量的时候必须要有一个可以存储这个变量的类,所以就引入了SqlParameter这个类来存储这个变量,他的用法 大家自己去查一下或是直接在vs的编译器里面看他的类的参数的解释就可以了,很容易理解。别的就不说了,就到这里把! 谢谢大家用了这么长的时间看我的东西!走的时候留下一个评论哦! 嘿嘿!