【牛腩】SQL注入

   定义

   通过不正当的操作,恶意的欺骗服务器执行SQL命令,达到入侵者想要的结果。


   方法

   一、拼接字符串

   就是将部分SQL语句,通过表单(输入框等)提交到数据库中,与设计者意图去执行的SQL语句一起拼接成新的SQL语句,最终达到欺骗服务器执行恶意的SQL命令。比如:

   原来SQL语句:insert into category(name) values("+caName+")

   输入框中输入:娱乐新闻')deletecategory where id=3 --')

   数据库执行SQL语句变成:insert into category(name) values(‘娱乐新闻’)delete category where id=3 --')

   SQL语句改变后,将执行插入和删除两个操作。


   二、查看错误页信息

   web中的网址:http://www.xxx.com/Login.aspx?id=49 and user>0 

   在该网址中,userSQL Server的一个内置变量,它的值是当前连接的用户名 ,是字符串类型。拿一个字符串的值跟int0比较,系统会先试图将字符串的值转成int型。但是这样做会出错,SQL Server的出错提示:将nvarchar值 ”abc” 转换数据类型 int 的列时发生语法错误,abc正是变量user的值,这样,入侵者就拿到了数据库的用户名。


   防范

   一、参数化查询

   在设计与数据库链接并访问数据时,在需要填入数值或数据的地方,使用参数 (Parameter)来给值。

   二、表单中限制特殊字符及长度

   特别要注意特别要注意单引号和数据类型的出现。

   三、屏蔽详细错误信息传到客户端

   通过config中的<customErrors>节点设置。

   <!--出现错误的时候自动导向("~/error.html"是弹出页面的路径)-->

   <customErrors defaultRedirect="~/error.html" mode="On" ></customErrors>

   四、URL重写

   URL重写就是首先获得一个进入的URL请求然后把它重新写成网站可以处理的另一个URL的过程。举个例子来说,如果通过浏览器进来的URL是“UserProfile.aspx?ID=1”那么它可以被重写成“UserProfile/1.aspx

   五、限制数据库的访问权限 

   设立不同用户的特殊权限,例如:用户名为1的用户只允许查询操作,然而用户1的信息被盗取登陆之后就不能对表进行别的操作,这样就一定程度上保证了数据的安全性。


   总结

   以前只知道有SQL注入这么一回事儿,但是从来没有用心的去查过。通过这一次的总结,让我对注入有了更深的理解,同时让我明白,数据库信息的安全非常重要,这是在以后开发中必须要想到的必要环节。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 24
    评论
评论 24
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值