美文网首页
接口安全设计方案

接口安全设计方案

作者: FisherTige_f2ef | 来源:发表于2021-11-22 18:39 被阅读0次

实现接口安全的目的:

1.防伪装攻击(案例:在公共网络环境中,第三方 有意或恶意 的调用我们的接口)

2.防篡改攻击(案例:在公共网络环境中,请求头/查询字符串/内容 在传输过程被修改)

3.防重放攻击(案例:在公共网络环境中,请求被截获,稍后被重放或多次重放)

4.防数据信息泄漏(案例:截获用户登录请求,截获到账号、密码等)

进行安全加密的对象

  • 所有写操作的接口(增删改),所有非公开的读接口(涉密/敏感/隐私等信息)(激进一些可以对全部接口处理)
  • 请求头参数、body参数、url拼接参数、返回结果数据等(不一定要全部加密,可根据实际的应用场景)

常见加密手段

  • DES加密
    DES加密算法是一种分组密码,以64位为分组对数据加密,它的密钥长度是56位,加密解密用同一算法。DES加密算法是对密钥进行保密,而公开算法,包括加密和解密算法。这样,只有掌握了和发送方相同密钥的人才能解读由DES加密算法加密的密文数据。因此,破译DES加密算法实际上就是搜索密钥的编码。对于56位长度的密钥来说,如果用穷举法来进行搜索的话,其运算次数为256。(安全程度低,不推荐)
  • AES加密
    ES加密算法采用对称分组密码体制,密钥长度的最少支持为128、192、256,分组长度128位,算法应易于各种硬件和软件实现。这种加密算法是美国联邦政府采用的区块加密标准,这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。
  • RAS加密:RSA加密算法是目前最有影响力的公钥加密算法,并且被普遍认为是目前最优秀的公钥方案之一。RSA是第一个能同时用于加密和数宇签名的算法,它能够抵抗到目前为止已知的所有密码攻击,已被ISO推荐为公钥数据加密标准。RSA加密算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但那时想要,但那时想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。
  • MD5加密:MD5被广泛用于各种软件的密码认证和钥匙识别上。MD5用的是哈希函数,它的典型应用是对一段信息产生信息摘要,以防止被篡改。MD5的典型应用是对一段Message产生fingerprin指纹,以防止被“篡改”。如果再有—个第三方的认证机构,用MD5还可以防止文件作者的“抵赖”,这就是所谓的数字签名应用。MD5还广泛用于操作系统的登陆认证上,如UNIX、各类BSD系统登录密码、数字签名等

关于加密算法的补充说明:

  • MD5是一种信息摘要算法,是不可逆的,不可以解密。所以它能算的上是一种单向加密算法。
  • Base64不是加密算法,它是一种数据编码方式,虽然是可逆的,但是它的编码方式是公开的,无所谓加密。

对称加密与非对称加密:

  • 加密和解密过程不同:对称加密过程和解密过程使用的同一个密钥,加密过程相当于用原文+密钥可以传输出密文,同时解密过程用密文-密钥可以推导出原文。但非对称加密采用了两个密钥,一般使用公钥进行加密,使用私钥进行解密。
  • 加密解密速度不同:对称加密解密的速度比较快,适合数据比较长时的使用。非对称加密和解密花费的时间长、速度相对较慢,只适合对少量数据的使用。
  • 安全性不同: 对称加密,过程中无法确保密钥被安全传递,密文在传输过程中是可能被第三方截获的,如果密码本也被第三方截获,则传输的密码信息将被第三方破获,安全性相对较低。非对称加密算法:私钥是基于不同的算法生成不同的随机数,私钥通过一定的加密算法推导出公钥,但私钥到公钥的推导过程是单向的,也就是说公钥无法反推导出私钥。所以安全性较高。

接口加密的方案推荐:

MD5生成签名认证:

1、对请求头:把所有请求参数按照参数名ASCII码从小到大排序(即字典序,或者跟后端约定其他顺序也行,关健是要统一), 使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA,如果参数的值为空则不参与签名,再将stringA拼接上与后端约定好的字符串(即加盐)得到stringB,最后对stringB进行MD5运算等到一个字符串(即签名)

2、对请求体类同上述

RAS生成签名认证

todo

请求头接口参数示例:
参数名 类型 必填 描述
sign string 所有参数加盐生成的签名
userId string 调用方的身份id,接口提供方用此来识别不同的调用者
timestamp string 记录接口发起请求的时间,加入时间戳,1分钟内有效(注意与服务端时间同步,允许一定的误差)
serialNo string 加入流水号,流水号在时间戳有效时间范围内需保证唯一

参考:
https://juejin.cn/post/6844903536916955149

相关文章

  • 接口安全设计方案

    实现接口安全的目的: 1.防伪装攻击(案例:在公共网络环境中,第三方 有意或恶意 的调用我们的接口) 2.防篡改攻...

  • 接口功能测试用例设计方案分享

    分享下一直以来做接口测试时测试用例的设计方案:

  • 如何做 HTTP 接口的访问控制

    之前分享的 HTTP API 接口设计方案(https://www.jitao.tech/blog/2020/01...

  • API接口设计方案

    接口路径的设计 路径是指后端提供给前端调用该接口的地址,其实就是该接口的链接,最好以一个较为明显的词为开头,或者说...

  • 安全接口

    个人总结接口安全需要注意以下几点 一、避免明文: post —— post、get等请求方式只是语义不同,本质都是...

  • 接口安全

    接口安全问题 请求身份是否合法? 请求参数是否被篡改? 请求是否唯一? AccessKey&SecretKey (...

  • 接口安全

    接口安全要求: 防伪装攻击(案例:在公共网络环境中,第三方 有意或恶意 的调用我们的接口) 防篡改攻击(案例:在公...

  • app接口设计之安全性

    1. 什么是接口 2. 接口的作用 3. API接口保障安全性原则 4. 接口安全需求 5. signature签...

  • API接口安全性设计

    API接口安全性设计 接口的安全性主要围绕Token、Timestamp和Sign三个机制展开设计,保证接口的数据...

  • APP社交类项目设计之七好友列表功能设计

    需求:社交APP用户的好友关系维护 现有环境:用户基本信息表t_userbase,环信通信接口 设计方案:...

网友评论

      本文标题:接口安全设计方案

      本文链接:https://www.haomeiwen.com/subject/fnibtrtx.html