专栏首页JAVA乐园重要的接口需要做哪些检查

重要的接口需要做哪些检查

阅读文本大概需要3分钟。

在软件开发中有一些接口需要做特殊的检查,以防黑客使用这些接口的漏洞来攻击我们的系统,给公司造成损失。

0x01:用户注册接口

一、每一个完整的软件系统都有一套完善用户体系,注册接口至少存在以下风险点:

  • 存在被机器人进行批量注册、产生大量僵尸用户
  • 恶意注册

如果存在被机器人批量注册的漏洞,就可能造成正常用户无法注册的情况。因为机器人批量注册时,可能的导致系统带宽、服务器资源被大量占用。

二、注册接口需要进行如下检查

  • 是否实现了人机识别,防止机器注册
  • 是否接入风控系统,防止褥羊毛的小号注册。很多app进行地推时,都对新用户进行一些优惠
  • 是否实现了对同一个设备访问注册接口的频率限制

0x02:登录接口

只要黑客攻破了登录接口,系统就没有任何安全性可言了。所以登录接口一定要防止系统账号对系统的暴力破解。

  • 登录接口是否实现了人机识别,防止系统账号暴力破解
  • 是否实现了同一个设备对该接口得分访问频率的限制
  • 登录身份验证失败时,是否做了模糊处理,比如“用户名或者密码错误”;而不是使用明确的错误信息,例如“用户名错误”,“密码错误”。等明确错误提示。

0x03:忘记密码接口和修改密码接口

忘记密码接口和修改密码接口,是否做了严格的身份认证。

  • 是否在服务端进行了身份认证,避免绕过前端控制
  • 身份验证的凭证是否在服务器进行了存贮和加密处理,避免将验证的内容直接返回给客户端
  • 在多个环节的身份验证中,要有各验证的排序机制,防止跳过多个环节认证的任何一个环节,而直接跳到最后一个环节的认证
  • 确保短信验证码发送到的是经过验证的手机号、邮箱地址。例如手机号、邮箱地址是从系统数据库中读取的手机号和邮箱

0x04:重要接口是否有短信、邮件、语音、图形等验证码

短信、邮件和语音验证功能控制不当,容易被恶意利用;造成短信炸弹、邮件轰炸和电话轰炸等滥用问题。短信、邮件和语音验证功能如果设计存在缺陷,容易被破解,给公司造成损失。

  • 验证信息是否具有一次性,防止回放。服务端在收到一次性验证请求后是否对验证信息进行了失效处理
  • 是否对验证发送的频次进行了有效控制,建议60s获取一次
  • 验证码是否有有效期;超时后是否实现了实效处理。建议短信验证码有效时间为60s或者120s
  • 短信、邮件和语音验证接口是否实现了人机识别,防止恶意攻击、恶意调用
  • 验证码对应的验证业务场景是否做好了严谨的逻辑控制。所有验证逻辑应该在服务器完成, 防止绕过前端控制
  • 如果能够实现,最好完成短信、邮件、语言接收手机/邮件与账号的对应关系的验证

0x05:支付接口和提现接口

所有的系统,关系到钱的问题都是大问题。所有支付接口一定要实现防篡改功能。

  • 是否实现了对支付金额、购买商品数量的校验,避免出现低价购买或者负金额购买。购买的支付金额最低是零元购买
  • 是否进行了多重身份验证,如短信验证码验证、支付密码验证等
  • 是否对提现账号进行了有效的身份验证,避免出现交叉越权,提现别人的金额
  • 是否对支付或者提现金额做了非常有效的校验,防止出现提现金额被篡改

本文分享自微信公众号 - JAVA乐园(happyhuangjinjin88),作者:java乐园

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-11-30

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 常见对称加密

    对称加密最直接的一句话概述就是:加密密钥与解密密钥完全相等,所以叫对称加密。常见的对称加密有DES、Triple DES、AES、PBE等。

    java乐园
  • CentOS 7.x安装微服务网关Apache APISIX

    APISIX是一个云原生、高性能、可扩展的微服务 API 网关。它是基于 OpenResty和etcd来实现,和传统API网关相比,APISIX具备动态路由和插...

    java乐园
  • 推荐四个后端开发使用特别有效的谷歌浏览器插件

    目前大部分企业开发采用前后端分离技术,同时返回的数据大部分采用json格式,而返回的数据或者在日志中记录的日志对应的数据都是采用json格式的,而且这些数据都是...

    java乐园
  • 热线13116915368_缅甸小勐拉欧亚国际开户API接口知识小结

    应用程序接口API(Application Programming Interface),是提供特定业务输出能力、连接不同系统的一种约定。这里包括外部系统与提供...

    爱小
  • (19) 接口的本质 / 计算机程序的思维逻辑

    数据类型的局限 之前我们一直在说,程序主要就是数据以及对数据的操作,而为了方便操作数据,高级语言引入了数据类型的概念,Java定义了八种基本数据类型,而类相当...

    swiftma
  • 微信公众平台数据接口开始内测

    微信公众平台每天的数据量越来越庞大了,新年红包再次延迟逐显服务器压力,微信也慢慢开放一些接口给第三方平台,这不,今天微信公众平台数据接口开始公测了。微信公众平台...

    ytkah
  • 最小在线影音源码

    Youngxj
  • 什么是Java Marker Interface(标记接口)

    先看看什么是标记接口?标记接口有时也叫标签接口(Tag interface),即接口不包含任何方法。在Java里很容易找到标记接口的例子,比如JDK里的Seri...

    Jerry Wang
  • 接口设计六大原则

    子勰
  • 什么是Java Marker Interface(标记接口)

    先看看什么是标记接口?标记接口有时也叫标签接口(Tag interface),即接口不包含任何方法。在Java里很容易找到标记接口的例子,比如JDK里的Seri...

    Jerry Wang

扫码关注云+社区

领取腾讯云代金券