对外接口需要注意的事项

1.安全

  之前做的一个在校项目,没有用 https 之前是明文传输账号密码的,被校内安全检测部门责令整改......

  用了 https 也可能因为用户操作不慎,被中间人攻击,这时候就算是 账号密码被加密,但是加密用的公钥是攻击者的,私钥也在攻击者那里 所以也会被破解。

  需要和前端协商好加密的方式 和密钥,如果单纯只用 RSA 这种高消耗的非对称加密的话,性能可能吃不消,如果用户量一大的话,如果用对称加密的话,又要保证密钥交接的过程中不被偷取

  最后因为这个项目用户量不多,只有几百人,最后还是用 RSA 非对称加密了......

  公私钥写死,公钥写死在前端,后端。虽然有可能被暴力破解,但是可能性不大,另外 还有 https 加持,安全性应该还可以。

  如果要求性能的话,就要模拟 https 那样,先非对称,用非对称加密 传输 对称加密的密钥后,再用对称加密。

 

2.幂等性

  类似情景:用户发过来的订单请求包可能在网络的某个节点因为错误,拷贝了两份,这样的话就需要对这两份包而言,只会执行一次真正的业务操作。

          具体实现可以用 随机 Token 等 策略

3.防止暴力压测

  攻击者可能无法修改 数据包里的数据,也无法实时加密合成出合法的包,但是他可以用合法的包做为请求数据,压测服务器。

  这样的话,就要设置包的过期时间,免得同一个包长期有效,这样的话攻击者只用拿一个包就能疯狂压测服务

4.限流:

  另一篇

5.调用方管理

  类似微信小程序的 接口,需要调用方提供 appid

  并且如果调用发有违法行为,就封禁此 appid

待补充。。。  

posted @ 2020-11-28 16:12  执生  阅读(393)  评论(0编辑  收藏  举报