如何防范sql注入式攻击

上篇文章谈到了sql注入式攻击,今天说一下如何防范sql注入式攻击!

       其实要防止asp.net应用被sql注入式攻击闯入并不是一件特别困难的事,只要在利用表单输入的内容构造sql命令之前,把所有内容过滤一番就可以了。过滤输入内容可以按照多种方式进行。

一、对于动态构造sql查询的场合,可以用下面的技术

1、删除用户输入内容中的所有连接字符串,防止攻击者构造出“select * from Users where username='mas' -- and password=' "之类的查询,因为这类查询的后半部分已经被注视掉,不再有效,所以攻击者只要知道一个合法的用户登录名称,根本不需要知道用户的密码就可以顺利获得访问权限。

2、对于用来执行查询的数据库账户,限制其权限。用不同的用户账户执行查询、插入、更新、删除操作。由于隔离了不同账户可执行操作,因而也就防止了原本用于执行select命令的地方却被用于执行insert、update、或者delete命令。

 

二、用存储过程来执行所有的查询

sql参数的传递方式将防止攻击者利用单引号和连接字符串实施攻击。此外,它还使得数据库权限可以限制到只允许特定的存储过程执行,所有的用户输入必须遵循从被调用到存储过程的安全上下文,这样就很难再发生注入式攻击了。

 

三、限制表单或查询字符串的输入长度

如果用户的登录名最多只有十个字符,那么不要认可表单中输入10个以上的字符,这将大大增加攻击者在sql命令中插入有害的代码的难度。

 

四、检查用户输入的内容的合法性

确保用户输入的内容只包括合法的数据。数据检查应到在客户端和服务器端都执行,之所以要执行客户端验证,是为了弥补客户端验证机制脆弱的安全性。

在客户端,攻击者完全有可能获得网页的源代码,修改验证合法性的脚本(或者直接删除脚本),然后将非法内容通过修改后的表单提交给服务器。因此,要保证验证操作确实已经执行,唯一的办法就是在服务端也执行验证。

 

五、将用户登录名称、密码等数据加密保存

加密用户输入的数据,然后再将它与数据库中保存的数据比较,这相当于对用户输入的数据进行了“消毒”处理,用户输入的数据不再对数据库有任何特殊的意义,从而也就防止了攻击者注入sql命令。

 

六、检查提取数据的查询所返回的记录数量

如果程序只要返回一个记录,但实际返回的记录却超过一行,那就当作出错处理。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

苍狼_2001

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值