SQL注入

来源:互联网 发布:biz cc 域名 哪个好 编辑:程序博客网 时间:2024/06/06 17:17
      随着网络技术的发展,大量的领域公有化。人们通过网络共享着各种的信息资源,无疑这给人类带来了极大程度的方便,但是同时,网络也存在着各种各样的隐患。有些人利用Internet进行着各种恶意的活动,如身份窃取,私密信息窃取等等。这些恶意的活动会以多种形态出现,如病毒,漏洞利用,黑客等都对用户的信息收到危害,或者导致用户所需要的服务被拒绝和劫持,所以在这种环境下,软件设计者就必须考虑并预防这种事件的发生。

     SQL作为一种结构化查询语言,能够使我们访问数据库,对数据库的数据进行增查删改。而SQL注入是一种利用用户输入构造SQL语句的攻击。如果设计者没有做任何预防工作,那么攻击者就有可能改变后台执行的SQL语句的结构。SQL注入是现今存在最广泛的Web漏洞之一。

简单的举个例子实现SQL的注入
                         select * from user_Info
                               where  user_ID='1'and user_PWD='1'

其结果为:
                          


      通过字符串注入我们使用这样的用户名和密码。后一个单引号充当了查询参数的右闭合符号,在它之后的语句都被认为是SQL命令的一部分,两条横线把user_PWD 变成了注释。在具体应用中则是用户只要在用户名的输入框输入‘or  1=1--,那么则可以出现所用的用户信息
                          select * from user_Info
                                where  user_ID='' or 1=1 -- and user_PWD=anything
其结果则为:
                         

 通过举例可以看到结果为数据库里所有的用户数据。这会造成严重的数据泄露问题。而解决这种隐患其中有一种防止SQL注入的方法就是在应用程序中参数化所有的SQL查询,无论是动态的SQL表达式还是存储过程。例如刚才的那个小例子就可以写成
                          select * from user_Info
                                    where  user_ID=@user_ID and user_PWD=@user_PWD
     并通过SQLParameter构造函数传递参数的值
0 0
原创粉丝点击