web安全暴力破解-SQL注入简介

暴力破解漏洞

简介

暴力破解漏洞的产生是由于服务器端没有做限制,导致攻击者可以通过暴力的手段破解所需信息,如用户名、密码、短信验证码等。暴力破解的关键在于字典的大小及字典是否具有针对性,如登陆时,需要输入4位数字的短信验证码,那么暴力破解的范围就是0000~9999.
如果对登陆失败做次数限制,如登陆失败6次,账号就会被锁定,这是攻击者可以采用的攻击方式是使用同一个密码对多个账户进行破解。如将密码设置为123456,然后对多个账户进行破解。

修复建议

  • 使用复杂的验证码,如滑动验证码等;
  • 如果用户登录失败次数查偶哦设置的阈值,则锁定账号;
  • 如果某个IP地址登陆失败次数超过设置的阈值,则锁定IP地址。这里存在的一个问题是,如果多个用户使用的是同一个IP地址,则会造成其他用户也不能登录。
  • 使用多因素认证,例如”密码+短信验证码“,防止账号被暴力破解。
  • 更复杂的技术是使用设备指纹:检测来自同一个设备的登录请求次数是否过多。

SQL注入漏洞

SQL注入漏洞简介

SQL注入是指Web应用程序对用户输入数据的合法性没有判断,前端传入后端的参数是攻击者可控的,并且参数被带入数据库查询,攻击者可以通过构造不同的SQL语句来实现对数据库的任意操作。
一般情况下,开发人员可以使用动态SQL语句创建通用、灵活的应用。动态SQL语句是在执行过程中构造的,他根据不同的条件产生不同的SQL语句。当开发人员在运行过程中根据不同的查询标准决定提取什么字段,如(select 语句),或者根据不同的条件选择不同的查询表时,动态地构造SQL语句会非常有用。

以PHP语句为例,命令如下:$query = “SELECT * FROM users WHERE id = $_GET[‘id’]” ;
由于这里参数ID可控,且被带入数据库查询,所以非法用户可以任意拼接SQL语句进行攻击。

原理

SQL注入漏洞的产生需要满足以下两个条件。

  • 参数用户可控:前端传给后端的参数内容是用户可以控制的。
  • 参数被带入数据库查询:传入的参数被拼接到SQL语句中,且被带入数据库查询。

分类

  • Union注入攻击
    Union注入是联合两个表进行注入攻击,使用关键词 union select 对两个表进行联合查询。两个表的字段数要相同,不然会出现报错。

  • Boolean注入攻击
    Boolean注入指的是构造SQL判断语句,通过查看页面返回结果推断那些SQL判断条件是成立的,以此获取数据中的数据。
    常用函数:
    – length(str):返回str字符串的长度。
    – substr(str, pos, len):将str从pos位置开始截取len长度的字符进 行返回。注意这里的pos位置是从1开始的,不是数组的0开始
    – mid(str,pos,len):跟上面的一样,截取字符串
    – ascii(str):返回字符串str的最左面字符的ASCII代码值。
    – ord(str):同上,返回ascii码
    – if(a,b,c) :a为条件,a为true,返回b,否则返回c,如if(1>2,1,0),返回0

  • 报错注入攻击
    通过构造恶意输入来触发数据库报错信息,从而获取有关数据库结构和数据的敏感信息。

  • 时间注入攻击
    界面返回值ture 无论输入任何值,返回的情况都是正常的来处。加入特定的时间函数,通过查看web页面返回的时间差来判断注入的语句是否正确。

  • 堆叠查询注入攻击
    可以执行多条语句,多条语句之间以分号隔开。

  • 二次注入攻击
    用户提交恶意数据被存入数据库之后,应用程序把他读出来用于生成新的SQL语句,如果没有相应的安全措施,还是有可能发生SQL注入,这种注入叫做二次SQL注入

修复建议

  • 过滤危险字符
  • 使用预编译语句
  • 17
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值