视频学习《你的API还在”裸奔“吗?》

  1. 简单区分对称加密、非对称加密
    对称加密就是使用相同的明文加密出来的密文都是一样的。非对称加密就是使用相同的明文加密出来的密文是不一样。比如:登录接口使用RSA进行加密传递参数,每次加密产生的密文都是不一样的。但是后台可以解析出来,每个密文使用过一次以后就废弃,这样别人就算截获了密文,也无法进行请求重放!
  2. RSA是非对称加密,除了加解密之外,还可以用来做签名。
  3. 防止数据泄露,使用非对称加解密,密文使用一次即废弃,服务端可以只接受可解密的加密字符串,其他解密不出来的均返回非法请求。以此要求使用加密传输。
  4. 防止参数被篡改,使用MD5加盐。设定一个字符串(盐值),将盐值和参数进行拼接,然后使用MD5生成一个授权码(该授权码在参数中一起传递给服务端);服务端难道参数后,使用和客户端约定好的盐值字符串拼接后,同样使用MD5生成一个授权码,将该授权码和客户端传入的授权码进行比较。如果相同,则验证通过。需要考虑盐值字符串的动态升级策略,比如设定一个时间间隔,根据算法自动升级
  5. 防止数据被爬虫,增加一个基于时间间隔的token参数,token会随着时间戳的变化而变化。服务端使用一个tokenInterceptor拦截所有后台请求判断请求中是否带有合法的token参数,来决定是否对请求放行。
    token在第一次客户端登录时由服务器生成返回给客户端,生成方式:
    String token = MD5(ToolUtils.systime() + ToolUtils.randomNo(4)); //时间戳 + 4位随机数
    
    只是用token不能完全杜绝爬虫,因为可以使用真实的用户信息来请求数据。此时需要建立黑名单库,比如请求ip,请求uid,如果请求频率过高就将其添加到黑名单中,使其发出的请求无效。
  6. RSA加密后的密文为什么都是以“=”结尾?因为RSA加密后得到的是byte[]无法在网路上直接传递,所以需要将byte[]使用base64转码成字符串。Base64可以把一个二进制数据转换成一个字符串,是一种编码格式,或者说编码算法,Base64可以表示64个基本的编码(A-Z,a-z,0-9,+,/)
  7. Base64的基本原理?
  8. 放窃取:非对称加密(RSA)
  9. 防篡改:MD5 + 盐
  10. 防泄漏:采用token机制
  11. 分布式、微服务、数据安全、Spring、大数据、容器技术(K8S)、AI、消息中间件、RPC、DevOps、ES、分库分表、负载均衡、缓存技术、并发、LVS、线程。

截图:


屏幕快照 2020-04-02 11.39.56.png
屏幕快照 2020-04-02 11.40.16.png
屏幕快照 2020-04-02 11.40.43.png
屏幕快照 2020-04-02 11.40.55.png
屏幕快照 2020-04-02 11.41.05.png
屏幕快照 2020-04-02 11.41.12.png

你可能感兴趣的:(视频学习《你的API还在”裸奔“吗?》)