Spring security 安全设置

1、CSRF攻击

CSRF 又称跨域请求伪造,攻击方通过伪造用户请求访问受信任站点。

 
  

举个例子

用户通过表单发送请求到银行网站,银行网站获取请求参 数后对用户账户做出更改。在用户没有退出银行网站情况 下,访问了攻击网站,攻击网站中有一段跨域访问的代码, 可能自动触发也可能点击提交按钮,访问的url正是银行网 站接受表单的url。因为都来自于用户的浏览器端,银行将 请求看作是用户发起的,所以对请求进行了处理,造成的 结果就是用户的银行账户被攻击网站修改。 

常见解决方法 

基本上都是增加攻击网站无法获取到的一些表单信息,比如 增加图片验证码,可以杜绝csrf攻击,但是除了登陆注册之外, 其他的地方都不适合放验证码,因为降低了网站易用性.。

spring security 的应对之策

a、在web应用中增加前置过滤器【CsrfFilter】对需要验证请求验证是否包含csrf的token信息,如果不包含,则包相应的错误。这样攻击网站无法获取到token信息,则跨域提交的信息都无法通过过滤器的校验。

b、CsrfFilter 默认只校验POST 请求,其它类型放过如果想要在表单中有csrf必须经过一次过滤器(非post)



 

c、request中设置csrf相关属性,如果没有,就生成一个


d、获取csrftoken两种方式

HttpSessionCsrfTokenRepository  将token信息保存的session中,通过模版或者表达式获取,默认采用这种方式



 CookieCsrfTokenRepository.withHttpOnlyFalse()  采用cooke方式存储,设置httponly 为false 这样可以通过jquery获取设置参数。

 

2、X-Content-Type-Options:nosniff 未指定文件类型,禁止浏览器猜测文件类型

spring security  应对之策

 

http.headers().addHeaderWriter(new XContentTypeOptionsHeaderWriter()) 
 3、X-Frame-Options 是否允许网页被iFrame

 

public XFrameOptionsHeaderWriter(XFrameOptionsMode frameOptionsMode) {
		Assert.notNull(frameOptionsMode, "frameOptionsMode cannot be null");
                /*如果设置为允许,spring抛出异常,要使用FrameOptionsHeaderWriter*/
		if (XFrameOptionsMode.ALLOW_FROM.equals(frameOptionsMode)) {
			throw new IllegalArgumentException(
					"ALLOW_FROM requires an AllowFromStrategy. Please use FrameOptionsHeaderWriter(AllowFromStrategy allowFromStrategy) instead");
		}
		this.frameOptionsMode = frameOptionsMode;
		this.allowFromStrategy = null;
	}
 DENY 不允许网页被iframe
SAMEORIGIN 允许网页被同一域名iframe
ALLOW-FROM 允许任意网页iframe该网页
spring 正确设置方式:
http.headers().addHeaderWriter(new XFrameOptionsHeaderWriter(XFrameOptionsMode.SAMEORIGIN)); 

http.headers().addHeaderWriter(new XFrameOptionsHeaderWriter(XFrameOptionsMode.DENY)); 
 
 4、最重要的是网站使用https协议,不要使用http协议
 
  • 大小: 144.5 KB
  • 大小: 25.2 KB
  • 大小: 75.5 KB
  • 大小: 25.9 KB
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值