多语言展示
当前在线:759今日阅读:60今日分享:30

什么是sql注入漏洞?

介绍一下什么是sql注入漏洞?
工具/原料
1

Visuai Studio

2

Sql server 2008 r2

方法/步骤
1

解释起来有点困难,我们直接用实际案例演示吧.首先,我们用Sql server 创建一个geek的数据库.再创建一个'表_登录'以及字段和数据.

2

创建一个C#语言Windows窗体程序.

3

创建一个和我图片差不多的界面. 其中最大的文本框里面放的我们当前执行的sql语句.以便大家更明白什么是SQL注入.

4

//以下代码是点击按钮登录之后执行的代码string 连接字符串 = @'server=.;database=geek;Integrated Security=true';            string sql = 'select count(*) from 表_登录 where 用户名='' + textBox_用户名.Text + '' And 密码='' + textBox_密码.Text + '';';            int count;            using (SqlConnection 连接对象 = new SqlConnection(连接字符串))            {                using (SqlCommand 执行对象 = new SqlCommand(sql, 连接对象))                {                    连接对象.Open();                    count = (int)执行对象.ExecuteScalar();                }            }            textBox_sql.Text = sql;            if (count > 0)            {                MessageBox.Show('登录成功');            }            else            {                MessageBox.Show('用户名或密码错误');            }

5

我们先输入错误的账号密码,看一下代码执行结果是登录失败.

6

我们再输入一下正确的帐号和密码是可以登录成功的.

8

这就是由于用户刻意输入,使字符串拼接的sql语句有了新的意义,和原来的sql语句意义完全不一样了.密码应该是sql的值,但却成为了sql语句的条件.我们要杜绝这种情况,就是要让客户输入的变成值,从而避免发生这种问题!

9

sql注入漏洞攻击总结一下:在你输入数据的时候,不违背你的语法,给你创造出一些新的条件,让你完成另外一些事情.

10

那么我们如何规避这种情况呢?在以前传统的做法是检测用户的输入,过滤替换掉一些敏感的字符,比如单引号,括号.但是这也不能绝对防范.在我们C#中,微软为我们设计了一个SqlParameter类库否则使用数据库的存储过程都可以完美过滤掉.下一篇经验分享,我们来介绍SqlParameter类库的使用.

注意事项

sql注入漏洞是非常危险的.开发数据库软件一定要懂得防范

推荐信息