当我们的体系越做越大时,代码的的松耦合以及性能问题很重要,但我觉得,数据的传输感觉更重要。安全问题是体系的心脏!!!值得我们去器重以及防患于未然。
今世软件开发中,前后端分离的项目逐渐成为主流。前后端分离的项目离不开后端对外提供接口,而请求这些接口的数据时,安全性应当包管。
二、解决方法
1、对请求做身份认证(数据签名)
假如不对请求举行签名认证,那么可以简单的通过fiddler等工具轻易抓包拿到数据,并举行篡改,提交,大规模批量调用,则会使体系产生大量垃圾数据,体系资源被大量消耗,甚至无法正常使用(另说,固然可以通过GateWay举行限流),因而我们需要对请求举行签名认证。
好比 http://www.xxx.com/getInfo?id=1,获取id为1的信息,假如不签名那么通过id=2,就可以获取2的内容等等。怎样签名呢?通常使用sign,好比原链接请求的时间加一个sign参数,sign=md5(id=1),服务器接受到请求,验证sign是否等于md5(id=1),假如等于说明正常请求。这会有个弊端,假如规则被发现,那么就会被伪造,以是适当复杂一些,还是能够提高安全性的。
如何防止数据篡改?
这里通过签名参数中包罗原有请求的全部参数,改动恣意参数,sign值都会差别,因此无法篡改。
如何防止重放攻击?
由于签名算法中还有imei(装备唯一Id)、timestamp参数,且签名算法为不可逆算法(如md5或sha1),因而对于正常的每个请求sign值不会重复。此时服务端可以存储5分钟的sign值,来做重放攻击时的验证过滤,高出5分钟的请求则直接被timestamp校验过滤。
2、对敏感数据举行加密(数据加密)
数据加密一直是保密数据的重要部门,常见的加密算法有可逆加密算法和不可逆加密算法,可逆加密算法又分为对称加密算法和非对称加密算法。
好比用户名暗码,我们需要加密,如许即使被抓包监听,他们也不知道原始数据是什么(假如简单的md5,是可以暴力破解),以是加密方法越复杂越安全,根据需要,常见的是 md5(不可逆),aes(可逆),自由组合吧,你还可以自己定义一些特别字符啊,没有做不到只有想不到, 举例:username = aes(username), pwd = MD5(pwd + username)。
这时间在截获数据时,得到的将是一串密文,显然,即使要破解,也需要相其时间。
但如许,有一个明显问题,就是接口吞吐量降落,明显,加密情况下,由于需要解密数据,接口的响应速率会降落。
对于一些重要数据,我们如许牺牲体系性能变动来的安满是可以接受的。
3、session、token机制
session(cookie)和 token 机制的出现是为了校验用户状态的。
自我先容一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到如今。
深知大多数Java工程师,想要提拔技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此网络整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够资助到想自学提拔又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零底子资料,也有适合3年以上履历的小伙伴深入学习提拔的进阶课程,根本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部门目次截图出来,每个节点里面都包罗大厂面经、学习笔记、源码讲义、实战项目、讲解视频,而且会一连更新!
假如你觉得这些内容对你有资助,可以扫码获取!!(备注Java获取)
总结
阿里伤透我心,疯狂复习刷题,终于喜提offer 哈哈~好啦,不闲扯了
1、JAVA面试焦点知识整理(PDF):包罗JVM,JAVA集合,JAVA多线程并发,JAVA底子,Spring原理,微服务,Netty与RPC,网络,日记,Zookeeper,Kafka,RabbitMQ,Hbase,MongoDB,Cassandra,计划模式,负载均衡,数据库,同等性哈希,JAVA算法,数据布局,加密算法,分布式缓存,Hadoop,Spark,Storm,YARN,机器学习,云盘算共30个章节。
2、Redis学习笔记及学习思维脑图
3、数据面试必备20题+数据库性能优化的21个最佳实践
《互联网大厂面试真题解析、进阶开发焦点学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
大厂面试真题解析、进阶开发焦点学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!**
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |