zoukankan      html  css  js  c++  java
  • RestFul规范的API接口如何保证接口和数据的安全性

    一、如何保证接口安全?
    问题1.请求参数被篡改;
    问题2.接口被重复调用;

    解决方案:

    1.时间戳超时机制,客户端调用接口时带上当前的时间戳 timetamp,用于防止DoS攻击,服务器接口收到 timetamp 后跟服务器当前系统时间进行对比,如果大于一定时间(比如设置为10秒),则认为请求失败,那么这个请求将被拦截掉。仅仅解决了接口被重复调用的问题,时间戳还是会被修改,所以要结合 sign 签名机制一起处理来保证接口的安全。由于服务器的时间和客户端的时间是存在时间差的,所以客户端时间必须和服务端时间做校验,客户端应用启动后通过接口获取服务器时间 ServerTime,保存本地,并同时记录当前客户端时间 LocalTime1,当下次请求接口的时候,时间即是:LocalTime2 - LocalTime1 + ServerTime。

    2.签名机制,对参数进行签名,防止参数被非法篡改。sign一般是将所有非空参数按照升序排序然后+key+timestamp拼接在一起,然后使用SHA1、MD5(timestamp+业务参数:将timestamp、业务参数以字母升序(A-Z)排序,按'key1=value1'+ '&' + 'key2=value2'连接所有参数得到字符串signStr)等加密算法进行加密,作为接口中的一个参数sign来传递,也可以将sign放到请求头中。服务器端收到请求以同样的算法得到签名,和当前签名进行对比,如果不一样,说明参数被更改过,直接返回错误表示,签名机制保证了数据不会被篡改。

    二、如何保证接口数据的安全?
    问题:请求的参数和返回的数据都有可能被别人拦截获取,而这些数据又是明文的,所以只要被拦截,就能获取相应的业务数据。

    解决方案:对所有请求和响应都进行加解密操作,前端提交的数据按照AES或者DES或者RSA加密算法,进行加密,然后提交到服务端,服务端对参数进行解密;响应数据使用AES或者DES或者RSA加密算法加密,客户端进行解密。

    参考文章:

    接口安全:https://www.cnblogs.com/ming-szu/p/8926179.html

    接口安全:https://zhuanlan.zhihu.com/p/200922940

     数据安全:https://blog.csdn.net/tianshan2010/article/details/113483393

  • 相关阅读:
    【算法专题】多项式运算与生成函数
    【CodeForces】914 E. Palindromes in a Tree 点分治
    【BZOJ】1468: Tree(POJ1741) 点分治
    【BZOJ】2599: [IOI2011]Race 点分治
    【POJ】2142 The Balance 数论(扩展欧几里得算法)
    【算法专题】仙人掌图问题
    【BZOJ】2125: 最短路 圆方树(静态仙人掌)
    【BZOJ】4316: 小C的独立集 静态仙人掌
    【BZOJ】3039: 玉蟾宫 悬线法
    【BZOJ】1023: [SHOI2008]cactus仙人掌图 静态仙人掌(DFS树)
  • 原文地址:https://www.cnblogs.com/heroljy/p/15222223.html
Copyright © 2011-2022 走看看