SQL防注入

1、 什么是SQL注入

SQL注入即是指web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句。

2、 SQL注入的目的

在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。

3、 SQL注入方式

3.1数字注入点(按:注入点分类)

3.2字符注入点(按:注入点分类)

3.3搜索注入点(按:注入点分类)

3.4GET注入(按:请求方式分类)
提交方式采用get的方式,注入点的位置在参数部分,比如有这样的一个链接http://xxx.com/news.php?id=1 , id 是注入点。
3.5POST注入(按:请求方式分类)
提交方式采用post的方式,注入位置才参数部分,常发生在表单。
3.6Cookie注入(按:请求方式分类)
注入位置在cookie的数据。
3.7联合注入(按照执行效果分类)
可以使用union的情况下的注入。
3.8时间盲注也叫延迟注入(按照执行效果分类)
即不能根据页面返回内容判断任何信息,用条件语句查看时间延迟语句是否执行(即页面返回时间是否增加)来判断。
延迟注入实例:https://blog.csdn.net/JKding123/article/details/88937680
3.9布尔盲注(按照执行效果分类)
即可以根据返回页面判断条件真假的注入
布尔盲注实例:https://blog.csdn.net/qq_35569814/article/details/100175886
3.10错误注入(按照执行效果分类)
即页面会返回错误信息,或者把注入的语句的结果直接返回在页面中。
3.11堆叠查询(按照执行效果分类)
可以同时执行多条语句的注入。

4、 怎样防止SQL注入

4.1客户端参数传递前做数据校验(一般作用不大)
4.2对url进行sql危险字符过滤和转义
4.3正则表达式验证
4.4参数化传值不使用拼接形式传值
4.5使用LINQ SQL 查询也可以有效避免SQL注入
4.6类型转换(如:Int类型的数据进行一次数据转化也能起到一定作用)
4.7关闭错误信息返回客户端(可以防止一些利用报错进行攻击的注入)
4.8使用框架也可以防止SQL注入(如NHibernate)
4.9用户权限控制(数据库层面)
4.10 敏感信息加密处理(如密码、手机号码等;防止通过注入形式猜测值)
4.11服务器安装一些安全软件,安全软件会自动过滤一些危险的操作(服务器层面)

5、 自动化测试工具

AppScan
ZAP
sqlmap/ SQLMapper

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值