• 0
  • 0
分享
  • APP接口安全设计要点——软件测试圈
  • 北极 2022-04-29 13:45:06 字数 1192 阅读 1967 收藏 0

37f176e8149d44d26d8b72d93d4c1924_1440w.jpg.png

总结了一些APP接口安全设计的要点供大家参考,如有疏漏请在评论里面提醒补充!

请求合法性校验:

请求合法性校验主要就是指如何避免API被非法的调用,比如系统里面有一个短信接口,就要考虑如何避免这个短信接口不被短信轰炸机滥用,可以采用的方式有以下几种:

1. 验证码,验证码主要用于防范恶意注册、恶意破解密码、恶意灌水等非法操作,验证码可以使用Google的CAPTCHA解决方案。

2. Token令牌,Token主要用于自动登录,也就是在不需要用户频繁登录的情况下保证访问的合法性。常见的流程是使用用户名和密码登陆后,服务端返回一个token,后续客户端每次方法都带上这个token,当这个token超过一定的时间(token有效期)没有被使用,则要求客户端重新输入用户名和密码重新获取token,服务端也通过请求的IP地址等一些信息判断客户端的网络环境和设备环境是否发生变化,如果发生变化,也要求客户端重新输入用户名和密码,重新获取token。

3. IP、MAC地址限制,只允许某一个MAC地址、IP或IP段的客户端进行访问请求,只能一定程度上起到防范作用。

4. User-Agent和Referer限制,只能一定程度上起到防范作用。

数据合法性校验:数据合法性的校验主要是为了避免异常数据和注入攻击。

1. 不依赖客户端的数据校验,不管客户端有没有进行数据校验,服务端都要做合法性校验。

2. 用白名单的方式验证数据合法性,也就是根据一系列已知的正确值或规则来验证请求数据,不尝试检验某些特定的错误。
数据加密:数据加密主要是指对敏感数据进行加密,避免因网络传输过程中的窃听和抓包造成敏感数据泄露,常见方法主要由:

1. 使用HTTPS协议。

2. 对敏感数据采用秘钥进行加密和解密。
接口错误处理:接口错误处理主要是值对接口的返回结果进行编码,制定统一的错误返回编码,避免因接口错误和异常等原因造成堆栈信息泄露。

接口过载保护:接口过载保护是指对接口访问频率设置阈值,超出阈值后不予处理,直接返回错误码,可以一定程度上防止CC攻击,过载保护可以通过Web服务器进行控制,也可以通过代码进行控制。

1. Nginx可以通过HttpLimitReqModul来限制单位时间内连接数的模块,使用limit_req_zone和limit_req指令配合使用来达到限制。 一旦并发连接超过指定数量,就会返回503错误。HttpLimitConnModul用来限制单个ip的并发连接数,使用limit_zone和limit_conn指令这两个模块的区别前一个是对一段时间内的连接数限制,后者是对同一时刻的连接数限制。

2. 可以通过代码的方式来判断,最好基于Redis计数器或者服务端缓存,避免对性能造成影响。

 

作者:jim jin

原文链接:https://zhuanlan.zhihu.com/p/22117672

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   在真实的压测过程中,我们不可能是录制完脚本直接就设置虚拟用户进行压测,通常为了使压测结果更加真实,我们还需要做一些修改,其中就用到了逻辑控制器,下面具体来讲一下几种常用的逻辑控制器的使用。  Loop Controller(循环控制器)  使用场景:如果录制的一个脚本中,我只想对其中的一个或者几个请求进行循环操作,但是登录请求只想执行一次,那么应该怎么办?  添加循环控制器即Loop Controller:  在这里设置Controller里请求的循环次数:  这样我们在执行脚本的时候,该循环控制器下面的所有请求都会请求两遍,而登录操作只会执行一遍,执行结果如下:  While Contr...
            14 14 2029
            分享
          • 读者提问:阿常老师,请问如何评价测试质量 ?阿常回答:评估测试质量,最直接的体现是线上问题发生率,间接的体现可以是测试用例质量,常见问题知识库。一、线上问题发生率评估测试质量,最直观的就是看本次迭代版本是否存在线上问题,线上问题数量有多少,线上问题的严重程度,线上问题的影响范围。二、测试用例的质量除了线上问题发生率,测试用例的质量也可以反映测试质量的高低。测试用例的质量主要体现在用例的需求覆盖度,用例覆盖到了多少业务场景。测试用例包括本次迭代的手工用例,以及测试组现有的自动化测试用例。三、常见问题知识库为什么要整理常见问题知识库 ?当我们明白了哪些是会高频发生的问题以后,在今后的测试...
            0 0 1729
            分享
          • 子查询含义:出现在其它语句中的select语句,称为子查询、内查询、嵌套查询外部的查询语句,称为为主查询或外查询 分类:案子查询出现的位置:select后面      仅支持标量子查询from后面       支持表子查询※where或having后面    标量子查询※、列子查询※、行子查询(较少)exists后面(相关子查询)按结果集的行列数不同:标量子查询(结果集只有一行一列)行子查询(结果集只有一行多列)列子查询(结果集只有一列多行)表子查询(结果集一般为多行多列) 一、whe...
            15 14 2079
            分享
          •   今天主要聊一聊银行的测试岗  互联网大厂工资高,但也不是那么好进的,这两年内卷越来越严重,想进大厂也越来越难。而银行的测试岗难度则会小很多,工资也还说的过去,并且工作相对稳定,很少会裁员,但可能会对学历有一定要求(相比于互联网公司)。  下面先来看几个问题,看看你是否适合去银行做测试。  ·是否能接受较低的工资,并且涨薪很慢(这是相比于互联网,如果和传统行业相比,工资还是可以的)  · 是否能接受较落后的技术栈,并且技术上的成长性较差(因为银行都是稳定为主,一般对技术要求并没有那些高)  · 是否能接受在职业晋升上会有论资排辈的情况存在  · 是否能接受国企那...
            0 0 2025
            分享
          • 读者提问:自学软件测试要学哪些?阿常回答:这个问题我从三点回答1、测试人要掌握的硬技能2、测试人要掌握的软技能3、推荐给大家的学习渠道一、测试人要掌握的硬技能1、软件测试基础理论2、数据库 SQL 编写3、Linux 命令的使用4、会写脚本(Python/Java)5、CI / CD 能力建设6、版本控制工具的使用(Git/SVN)7、抓包分析工具的使用(Fiddler/Charles/WireShark)8、BUG 管理工具的使用(禅道/Jira)9、接口测试工具的使用(Postman/Jmeter/命令行工具 curl/浏览器开发者模式 / 抓包工具)10、性能测试工具...
            0 0 1332
            分享
      • 51testing软件测试圈微信