SpringBoot2(3),网易的朋友给我这份339页的网络安全面经

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上网络安全知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip204888 (备注网络安全)
img

正文

Session中可以保存任意类型的数据;
Session默认的生命周期是30分钟,可以手动设置更长或更短的时间。


### **二. Cookie机制**


#### **1. 什么是Cookie**



> 
> *Cookie翻译成中文是甜饼的意思,其实就是一个小型的文本文件,用来保存一些简单的信息(浏览器对Cookie的内存大小是有限制的)。Cookie由服务器端生成,并且会发送给 User-Agent (一般是浏览器),服务器一般会告诉浏览器设置一下Cookie,然后浏览器会自动将该 Cookie 以*  
>  *`key/value`*  
>  *的格式保存到浏览器的某个目录下;等到下次请求同一网站时,浏览器会自动通过请求头发送该`Cookie`给服务器,前提是浏览器设置了启用`Cookie`功能。*
> 


#### **2. 为什么要有Cookie**



> 
> *Web应用程序是使用`HTTP`协议来传输数据的,而`HTTP`协议是无状态的协议,也就是说一旦数据交换完毕,客户端与服务器端的连接就会关闭,等再次交换数据就需要建立新的连接,这就意味着服务器无法从连接上跟踪会话。比如我们登陆一个网站的时候,会提醒你要不要记住账户和密码,这样下次来你就不用再次输入账号密码了,这就是`Cookie`的作用。当我们再次访问的时候,服务器会直接根据我们的`Cookie`来获取上一次取过的东西。*
> 


#### **3. Cookie 的特点**


#### **3.1 Cookie 的过期时间**



> 
> *我们每次发送请求的时候,都会根据`domain`来设置相应的Cookie。Cookie有永久的,也有临时的,每个浏览器都有自己的Cookie,我们可以通过设置`expires、max-age`来设置保存日期,如果不设置的话默认是临时存储,也就是说关闭浏览器后Cookie就会消失。*
> 



document.cookie = ‘expires=时间/max-age=秒’


#### **3.2 Cookie要满足同源策略**



> 
> *虽然网站`news.baidu.com`与`www.baidu.com`同属于Baidu,但是域名却不一样,也就是说这两者之间是不能互相操作彼此`Cookie`的。只有域名和`path`都必须一样,才能相互访问彼此的Cooki`。但是需要注意不同浏览器对`path`访问规定是不一样的,对于chrome,`path`必须为当前目录,设置为其他目录无效,当前页面只能访问当前目录的`Cookie`。*
> 


#### **3.3 Cookie内存大小受限制**


Cookie有个数和大小的限制,大小一般是4k,但是不同的浏览器,具体的Cookie大小也是不同的。


* Firefox和Safari允许Cookie多达4097个字节,包括名(name)、值(value)和等号;
* Opera允许Cookie多达4096个字节,包括名(name)、值(value)和等号;
* Internet Explorer允许Cookie多达4095个字节,包括名(name)、值(value)和等号。


![](https://img-blog.csdnimg.cn/5407b4ad404a4705bc9b5935faebdf87.png)


 


#### **3.4 Cookie的安全性**


`Cookie`是保存在浏览器本地的,是可以被修改的,所以敏感的数据不要放在Cookie里。


### **三. Session共享**


#### **1. Session存在的问题**


HttpSession是通过Servlet容器创建和管理的,像Tomcat/Jetty都是保存在内存中的。但是如果我们将Web应用横向扩展成分布式的集群,然后利用LVS或Nginx进行负载均衡,那么对来自同一用户的Http请求,将有可能被负载分发到两个不同的服务器实例中去。那么如何保证不同实例间的Session共享,就成为一个不得不解决的问题。


最简单的解决方法就是把Session数据保存到内存以外的一个统一的地方,例如Memcached/Redis中。那么问题又来了,如何替换掉Servlet容器,来创建和管理HttpSession呢?


#### **2. Session共享的实现方案**


1. 利用Servlet容器提供的插件功能,自定义HttpSession的创建和管理策略,并通过配置的方式替换掉默认的策略。不过这种方式有个缺点,就是需要耦合Tomcat/Jetty等Servlet容器的代码。这方面其实早就有开源项目了,例如[memcached-session-manager]( ),以及[tomcat-redis-session-manager]( ),不过这暂时都只支持Tomcat6/Tomcat7。
2. 配置Nginx的负载均衡算法为ip\_hash,这样每个请求按访问IP的hash结果分配,这样来自同一个IP的访客就会固定访问一个后端服务器,有效解决了动态网页存在的Session共享问题。
3. 使用Shiro管理Session,可以用Redis来实现Shiro 的SessionDao接口,这样Session便归Redis来保存了。
4. 设计一个Filter,利用HttpServletRequestWrapper,实现自己的 getSession()方法,来接管创建和管理Session数据的工作。Spring-Session就是通过这样的思路实现的。
5. Spring-Session结合Redis实现Session共享。


### **四. Spring Session**


#### **1. 传统Session的问题**



> 
> *我们都知道Session是由Web容器管理的,即一个Session只保存在一台机器上,适合于单体应用。但随着架构的演练,不断的向微服务分布式集群演进,此时传统的Session就不能工作了。如:现在有3台Web服务器,客户端通过Nginx负载均衡技术,来负载到某一台服务器上,用户此次的数据就保存到了这台服务器的Web容器中了。等用户下次请求时,如果被负载到其它机器上,那么就拿不到之前保存的数据了,这时候就需要整个服务器集群共享同一个Session。*
>   
> 
> *为了解决所有服务器共享一个Session,那么Session就不能单独的保存在自己的Web容器中,而是要保存在一个公共的会话仓库(Session Repository)中,也就是说所有的服务器都要访问这同一个仓库,这样所有服务器的状态便都一致了。Spring Session支持的仓库有Reids、MongoDB、JDBC等。*
> 


#### **2. Spring Session的存储方式**


默认情况下,在Spring Boot中,为Spring Session提供了几种存储方式:


* JDBC
* MongoDB
* Redis
* Hazelcast
* HashMap


在Spring Session可用的情况下,我们可以选择存储Session的存储类型[StoreType]( )。例如,按如下配置将使用JDBC作为后端存储:



spring.session.store-type=jdbc

通过设置store-typenone可以禁用Spring Session


#### **注:**


出于向后兼容,在Redis可用的情况下,Spring Boot中会默认自动配置及使用Redis来存储Spring Session。


另外每种存储方式都有特殊设置,例如,对于jdbc存储可自定义要存储的表名:



spring.session.jdbc.table-name=SESSIONS


#### **3. Spring Session的优点**


## 写在最后

**在结束之际,我想重申的是,学习并非如攀登险峻高峰,而是如滴水穿石般的持久累积。尤其当我们步入工作岗位之后,持之以恒的学习变得愈发不易,如同在茫茫大海中独自划舟,稍有松懈便可能被巨浪吞噬。然而,对于我们程序员而言,学习是生存之本,是我们在激烈市场竞争中立于不败之地的关键。一旦停止学习,我们便如同逆水行舟,不进则退,终将被时代的洪流所淘汰。因此,不断汲取新知识,不仅是对自己的提升,更是对自己的一份珍贵投资。让我们不断磨砺自己,与时代共同进步,书写属于我们的辉煌篇章。**


需要完整版PDF学习资源私我





**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注网络安全)**
![img](https://img-blog.csdnimg.cn/img_convert/a5ffbe29d1dc3a39cc6e727d7a0972cb.png)

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注网络安全)**
[外链图片转存中...(img-475POjW6-1713404758653)]

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值