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

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

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   美国司法部对苹果应用程序商店(App Store)规则的反垄断调查仍在继续,对这家数字店面主导地位的审查显然已全面展开,并有可能接近对这家 iPhone 制造商提起诉讼。  自 2020 年以来,司法部一直在对苹果 App Store 的行为进行调查,审查开发者所说的反竞争行为。时隔多年,调查仍在进行中,司法部可能面临着时间紧迫的问题。  自 2021 年 11 月起担任司法部反垄断部门主管的乔纳森-坎特(Jonathan Kanter)向《金融时报》声称,App Store 政策调查现在"火力全开"。尽管坎特此前曾表示,他希望对苹果等美国大公司提起诉讼,但到目前为止,...
            0 0 308
            分享
          • 在面试的时候,如果你透漏出你会接口测试,面试官往往会针对你会的接口测试问很多专业性的问题:所以在面试之前,还是要多多了解接口测试的相关知识到底什么是接口?一般来说接口有两种,一种是程序内部的接口,一种是系统对外的接口。广义来说,客户端与后台服务间的协议;插件间通信的接口;模块间的接口;再小到一个类提供的方法;都可以理解为接口系统对外的接口如果我们要从网站或服务器上获取资源或信息,网站肯定不会把数据库共享给你,它只会给你提供一个写好的方法来获取数据,我们通过引用它提供的接口就能获取数据程序内部的接口它是方法与方法之间,模块与模块之间的交互,也是程序内部抛出的接口。比如一个web项目,有登录、新增...
            0 0 911
            分享
          • 在天网查上看了一下全国软件公司有1000多万家,其中上市的公司有7万多家,也就是占比0.7%通过这个数据可以发现,大部分公司从实力和规模上都偏向中型或者小型也就说其中的流程不一定很健全,设置没有流程而言。下图窃取了两张数据的图片供参考 为什么要指出这个问题,笔者目前在二线城市,工作10年经历过几家公司,很少有公司把流程指定的很正规和完善基本上的形式是 常规瀑布模式和敏捷模式 相结合,赶上功能已上线,出现Bug时  常见的状态开发快速定位问题进行修改测试抓紧时间进行测试,测完后上线发布 所以得出的结论是流程不重要,重要的是大家同心协力把问题解决,产品快速上线那么问题...
            0 0 1495
            分享
          • 测试人员部署版本的时候需要登录linux服务器,去下载,安装一些环境配置,搭建测试环境,这样才能和开发环境独立开来。除此之外,版本测试期间,在一部分场景下,测试人员需要登录服务器去查询一些文件,修改一些文件,修改一些文件权限等,或者链接数据库,查询数据库,新增数据,删除,修改数据等。这个时候就需要用到一些linux命令了。1)使用less [file] 命令查看2)[g] 跳到文件头3)[G] 跳到文件尾部4)[/] 向下查找5)[?] 向上查找6)[n] 查找后找下一个7)[N] 查找后找上一个8)[b] 向上翻...
            1 1 12234
            分享
          • 什么是网络爬虫?相信刚接触爬虫这个词的人都有这样的疑问,网络爬虫可以做什么?它是基于什么样的原理,如果想要学习爬虫,需要掌握什么知识。本文将会对这些问题做一个解释和说明,希望可以帮助正在爬虫入门阶段的朋友。网络爬虫是捜索引擎抓取系统的重要组成部分,爬虫的主要目的是将互联网上的网页下载到本地形成一个互联网内容的镜像备份那么网络爬虫的基本结构和工作流程是什么样的呢?基本的工作流程如下:首先可以选择一部分精心挑选的种子url;将这些URL放入待抓取URL系列;从待抓取URL队列中取出待抓取在URL,解析DNS,并且得到主机的ip,并将URL对应的网页下载下来,存储进已下载网页库中。此外,将这些URL...
            12 12 1509
            分享
      • 51testing软件测试圈微信