1.作用
这个主要是个response写安全响应头信息的。
默认主要包含五个头信息
第一个:org.springframework.security.web.header.writers.XContentTypeOptionsHeaderWriter
头信息:X-Content-Type-Options=nosniff
作用: 这个是帮助script 和 styleSheet 元素拒绝包含错误的 MIME 类型的响应。这是一种安全功能,有助于防止基于 MIME 类型混淆的攻击。
第二个:org.springframework.security.web.header.writers.XXssProtectionHeaderWriter
头信息:X-XSS-Protection=1; mode=block
作用:防御Xss攻击(跨脚本攻击)
第三个:CacheControlHeadersWriter
头信息 :
Cache-Control=no-cache,store,max-age=0,must-revalidate
Pragma=no-cache
Expires=0
作用: 缓存控制
第四个:HstsHeaderWriter
头信息:Strict-Transport-Security=max-age=31536000 ; includeSubDomains
作用:HSTS标头用于强制服务器和浏览器通过HTTPS进行通信,HSTS标头还可以用于强制跨子域使用HTTPS
第五个: XFrameOptionsHeaderWriter
头信息:X-Frame-Options = DENY
作用:防止点击劫持,DENY:不能被嵌入到任何iframe或者frame中,SAMEORIGIN:页面只能被本站页面嵌入到iframe或者frame中,ALLOW-FROM uri:只能被嵌入到指定域名的框架中
2.源码解析
1.判断先写头信息还是后写
2.写头信息
3.从五个里面随便找一个HeaderWriter
3.小结
Spring security的添加了一些http防御头信息来防止xss,xframe等攻击。这些都是通过请求头,让浏览器遵循安全协议去做的事情。
下一个过滤器是CsrfFilter
,是用来防御Csrf(跨站请求伪造)攻击的 ,我们下篇再聊~