视频学习《你的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
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 最近公司用到RSA数据加密传输,本人也只会使用,并不知其原理,刚好今天在csdn看到一位大牛的博客写得很到位,遂搬...
    爸比好酷阅读 1,493评论 0 1
  • 1. 介绍 数字签名、信息加密 是前后端开发都经常需要使用到的技术,应用场景包括了用户登入、交易、信息通讯、oau...
    luckyYU阅读 11,056评论 1 6
  • 这里先简单介绍单向散列函数、消息摘要和哈希碰撞的的概念 单向散列函数: 将任意长度的信息转换为较短的固定长度的值,...
    坤_7a1e阅读 3,674评论 0 0
  • 2018.5.27 第173天 今天下午在新世纪培训学校参加了正面管教的学习,最大的感触就是正面管教与焦点有很多...
    鹃花开阅读 354评论 0 0
  • 一个人的成全,好过三个人的纠结。 一一题记 最亲爱的你,这...
    双眼皮二狗阅读 556评论 0 4

友情链接更多精彩内容