当前位置: 首页 > wzjs >正文

零基础网站建设书籍济南seo推广

零基础网站建设书籍,济南seo推广,怎样提高网站首页权重,seo快速入门教程Spring Security除了认证授权外功能外,还提供了安全防护功能。本文我们来介绍下SpringSecurity中是如何阻止CSRF攻击的。 一、什么是CSRF攻击 跨站请求伪造(英语:Cross-site request forgery),也被称为 one-click attack 或者 session riding,通常缩写为 CSRF 或者 XSRF…

  Spring Security除了认证授权外功能外,还提供了安全防护功能。本文我们来介绍下SpringSecurity中是如何阻止CSRF攻击的。

一、什么是CSRF攻击

  跨站请求伪造(英语:Cross-site request forgery),也被称为 one-click attack 或者 session riding,通常缩写为 CSRF 或者 XSRF, 是一种挟制用户在当前已登录的 Web 应用程序上执行非本意的操作的攻击方法。跟跨网站脚本(XSS)相比,XSS利用的是用户对指定网站的信任,CSRF 利用的是网站对用户网页浏览器的信任。

  跨站请求攻击,简单地说,是攻击者通过一些技术手段欺骗用户的浏览器去访问一个自己曾经认证过的网站并运行一些操作(如发邮件,发消息,甚至财产操作如转账和购买商品)。由于浏览器曾经认证过,所以被访问的网站会认为是真正的用户操作而去运行。这利用了 web 中用户身份验证的一个漏洞:简单的身份验证只能保证请求发自某个用户的浏览器,却不能保证请求本身是用户自愿发出的。举个例子如下:

image.png

二、解决方案

1.检查Referer字段

  HTTP头中有一个Referer字段,这个字段用以标明请求来源于哪个地址。在处理敏感数据请求时,通常来说,Referer字段应和请求的地址位于同一域名下。以上文银行操作为例,Referer字段地址通常应该是转账按钮所在的网页地址,应该也位于www.bankchina.com之下。而如果是CSRF攻击传来的请求,Referer字段会是包含恶意网址的地址,不会位于www.bankhacker.com之下,这时候服务器就能识别出恶意的访问。

image.png

  这种办法简单易行,工作量低,仅需要在关键访问处增加一步校验。但这种办法也有其局限性,因其完全依赖浏览器发送正确的Referer字段。虽然http协议对此字段的内容有明确的规定,但并无法保证来访的浏览器的具体实现,亦无法保证浏览器没有安全漏洞影响到此字段。并且也存在攻击者攻击某些浏览器,篡改其Referer字段的可能。

2.CsrfToken

  其实CSRF攻击是在用户登录且没有退出浏览器的情况下访问了第三方的站点而被攻击的,完全是携带了认证的cookie来实现的,我们只需要在服务端响应给客户端的页面中绑定随机的信息,然后提交请求后在服务端校验,如果携带的数据和之前的不一致就认为是CSRF攻击,拒绝这些请求即可。

image.png

三、SpringSecurity是如何防止CSRF攻击的

  首先从 Spring Security 4.0 开始,默认情况下会启用 CSRF 保护,以防止 CSRF 攻击应用程序,Spring Security CSRF 会针对 PATCH,POST,PUT 和 DELETE 方法进行防护。

1.开启关闭CSRF防御

  在SpringSecurity中默认是开启csrf防御的,我们可以通过一下配置来关闭csrf防御

http.csrf().disable();

或者在基于配置文件的使用中使用如下操作关闭

<security:csrf disabled="true"/>

2.SpringSecurity的实现

2.1 CSRF的原理

  1. 生成csrfToken保存到HttpSession或者Cookie中
  2. 请求到来时,程序会从请求中获取提交的csrfToken,同时会从HttpSession中获取之前存储的csrfToken进行比较,如果相同则认为是合法的请求,继续后面的操作,如果不相等则认为是CSRF工具,拒绝该请求

2.2 源码分析

  然后我们来看下SpringSecurity中的代码是如何实现的。我们主要看的是 spring-security-web.jar中的

org.springframework.security.web.csrf包下的源码。

image.png

2.2.1 CsrfToken

  CsrfToken是一个非常简单的接口,定义了Token令牌,消息头和请求参数。

public interface CsrfToken extends Serializable {/*** 获取我们放置在请求头中CSRF随机值的名称*/String getHeaderName();/*** 获取请求体中的csrf随机值的参数名称*/String getParameterName();/*** 返回具体的Token值*/String getToken();}

CsrfToken的默认实现是DefaultCsrfToken。

image.png

2.2.2 CsrfTokenRepository

  CsrfTokenRepository接口也非常简单,定义了Token的生成,存储和获取的相关API

public interface CsrfTokenRepository {/*** 生成Token*/CsrfToken generateToken(HttpServletRequest request);/*** 存储生成的Token*/void saveToken(CsrfToken token, HttpServletRequest request, HttpServletResponse response);/*** 返回Token*/CsrfToken loadToken(HttpServletRequest request);}

CsrfTokenRepository的实现在SpringSecurity中有两个实现。

image.png

默认的实现是HttpSessionCsrfTokenRepository。是一个基于HttpSession保存csrfToken的实现。

public final class HttpSessionCsrfTokenRepository implements CsrfTokenRepository {private static final String DEFAULT_CSRF_PARAMETER_NAME

文章转载自:

http://LgFcSQvm.hmtft.cn
http://RiloDEKk.hmtft.cn
http://nQf885Xd.hmtft.cn
http://LpB1RTVH.hmtft.cn
http://lDG8sWAW.hmtft.cn
http://lIDbRACT.hmtft.cn
http://qiD131Cz.hmtft.cn
http://yYPPdEEk.hmtft.cn
http://CfLjbynt.hmtft.cn
http://avplQ0zl.hmtft.cn
http://SCH9SYY9.hmtft.cn
http://7m380vXL.hmtft.cn
http://InTRv0IB.hmtft.cn
http://NtKLzHSh.hmtft.cn
http://kyHoJ8VH.hmtft.cn
http://PEvOVtgB.hmtft.cn
http://pmK1cp2O.hmtft.cn
http://ZNeNox20.hmtft.cn
http://IpeScnnk.hmtft.cn
http://KjaT4fR1.hmtft.cn
http://dnz0nTjw.hmtft.cn
http://kFMwFQJn.hmtft.cn
http://p8zYtok0.hmtft.cn
http://d1vRSFwM.hmtft.cn
http://qTc8ua86.hmtft.cn
http://sYpLf6Zj.hmtft.cn
http://5aUKr6ZD.hmtft.cn
http://CQRWugyu.hmtft.cn
http://QNfHy8ev.hmtft.cn
http://7lf5TtzY.hmtft.cn
http://www.dtcms.com/wzjs/659681.html

相关文章:

  • 票据理财网站建设凡科外贸网站建设
  • 网站logo大全重庆住建网官网
  • ih5做的网站怎么上传wordpress搭建表格
  • 哪个网站可以学做衣服网页小说怎么下载
  • 九网互联怎么建设网站交换友链要注意什么
  • 易企网站建设西安免费做网站电话
  • 在线开发网站建设网站开发用什么语言比较流行
  • 在哪找做调查赚钱的网站中国建筑网官网监理工程师网站
  • 珠海网站建设公司网站godaddy服务器做网站
  • 做网站需要用什么系统建立网站的好处
  • 青岛网站推广怎么做好做网站能赚到钱吗
  • 网站弹出咨询这个怎么做网站和App建设成本
  • 网站开发前后端分离是主流吗it培训机构倒闭
  • 彩票网站如何做推广前端开发师
  • 保定制作公司网站为什么要选择高端网站定制
  • 图片 网站开发昆山网站建设苦瓜
  • 网站 硬件方案网页制作专业服务
  • 中铁中基建设集团网站怎样才能做好销售
  • 南昌大型网站制作自己建个网站需要什么
  • 杭州商城型网站建设网站优化怎样做外链
  • wordpress建站必须选择主题wordpress分享 赞插件
  • 优良的定制网站建设服务商凌云网络科技有限公司
  • 网站制作评价网站建设scyiyou
  • 个性化企业网站制作公司网站设计思想
  • 代发网站建设教程优化排名工具
  • 福州网站设计定制公司网页布局照着别的网站做会侵权吗
  • 电商网站建设培训学校北京网站制作网站优化
  • 关于网站建设新闻短视频制作软件
  • 上海网站建设做物流一html网页标题代码怎么写
  • 京东网站建设的策划书包装网站建设