security中文什么意思怎么读(Spring Security入门原理及实战)

自媒体 自媒体

CSRF这种攻击方式在2000年已经被国外的安全人员提出,但在国内,直到06年才开始被关注,08年,国内外的多个大型社区和交互网站分别爆出CSRF漏洞,如:NYTimes.com(纽约时报)、Metafilter(一个大型的BLOG网站),YouTube和百度HI......而现在,互联网上的许多站点仍对此毫无防备,以至于安全业界称CSRF为“沉睡的巨人”。

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

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

spring-security中csrf防御原理

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

(本文来自www.777n.com)

看一下CsrfFilter的源码就很好理解了

// 先从tokenRepository中加载token

CsrfToken csrfToken = tokenRepository.loadToken(request);

final boolean missingToken = csrfToken == null;

// 如果为空,则tokenRepository生成新的token,并保存到tokenRepository中

if(missingToken) {

CsrfToken generatedToken = tokenRepository.generateToken(request);

// 默认的SaveOnAccessCsrfToken方法,记录tokenRepository,

// tokenRepository,response,获取token时先将token同步保存到tokenRepository中

csrfToken = new SaveOnAccessCsrfToken(tokenRepository, request, response, generatedToken);

}

// 将token写入request的attribute中,方便页面上使用

request.setAttribute(CsrfToken.class.getName(), csrfToken);

request.setAttribute(csrfToken.getParameterName(), csrfToken);

// 如果不需要csrf验证的请求,则直接下传请求(requireCsrfProtectionMatcher是默认的对象,对符合^(GET|HEAD|TRACE|OPTIONS)$的请求不验证)

if(!requireCsrfProtectionMatcher.matches(request)) {

filterChain.doFilter(request, response);

return;

}

// 从用户请求中获取token信息

String actualToken = request.getHeader(csrfToken.getHeaderName());

if(actualToken == null) {

actualToken = request.getParameter(csrfToken.getParameterName());

}

// 验证,如果相同,则下传请求,如果不同,则抛出异常

if(!csrfToken.getToken().equals(actualToken)) {

if(logger.isDebugEnabled()) {

logger.debug("Invalid CSRF token found for " + UrlUtils.buildFullRequestUrl(request));

}

if(missingToken) {

accessDeniedHandler.handle(request, response, new MissingCsrfTokenException(actualToken));

} else {

accessDeniedHandler.handle(request, response, new InvalidCsrfTokenException(csrfToken, actualToken));

}

return;

}

filterChain.doFilter(request, response);

使用样例

在web.xml中增加spring的过滤器代理

在spring的配置文件中增加过滤器

<bean id="csrfFilter" class="org.springframework.security.web.csrf.CsrfFilter">

<constructor-arg>

<span style="font-family: Arial, Helvetica, sans-serif;"><!--</span><pre name="code" class="html">HttpSessionCsrfTokenRepository是把token放到session中来存取

-->

<bean class="org.springframework.security.web.csrf.HttpSessionCsrfTokenRepository"/>

</constructor-arg>

</bean>

<!--

如果用的是spring mvc 的form标签,则配置此项时自动将crsf的token放入到一个hidden的input中,而不需要开发人员显式的写入form

-->

<bean id="requestDataValueProcessor" class="org.springframework.security.web.servlet.support.csrf.CsrfRequestDataValueProcessor"/>

如果配置了CsrfRequestDataValueProcessor,并且使用了spring的form标签来写表单代码,则这样就可以了。否则需要在页面上书写相关代码

首先获取token

<meta name="_csrf" content="${_csrf.token}"/>

<meta name="_csrf_header" content="${_csrf.headerName}"/>

然后在发送请求之前将token放入header中(或者form表单中)

var token = $("meta[name='_csrf']").attr("content");

var header = $("meta[name='_csrf_header']").attr("content");

$(document).ajaxSend(function(e, xhr, options) {

xhr.setRequestHeader(header, token);

});

自媒体微信号:777n扫描二维码关注公众号
爱八卦,爱爆料。
小编推荐
  1. NO.1 神奇的魔法蛋糕,1次能吃到3种口感,用料做法都简洁

    魔法蛋糕是一款很神奇的蛋糕,经由烘焙后会在一个蛋糕里主动分层,呈现出三种分歧状况,,让你一次吃到3种口感,用料做法都很简洁,赶紧试一

  2. NO.2 淘宝20块钱的帆布包也太悦目了吧!一口气买十个!

    哈喽美宝宝们晚上好 你们可爱的鸡宝宝又来啦! 不知道人人平时最常背的包包是哪个 鸡是无论剁手几多个包包 最常背的必然是 帆布包 ! 帆布包真

  3. NO.3 经典人力成本核算剖析

    每到做人力成本的预算时,都邑让HR小伙伴头大。因为这项工作需要财务、买卖多部门配合协作完成:算产值、奖金,展望昔时的营业收入和需要投入

  4. NO.4 一位教师妈妈的心声:家长别把负能量传给孩子,请相信先生的

    比来, “家庭教育” 这一话题引起了人人的普遍商议。同伙圈撒布的各类段子和文章,让“焦虑”成了家长的集体画像。焦虑的背后其实是无处安放

  5. NO.5 男生有生理回响和爱你没紧要,就像你妈打你,不讲事理...

    相信好多宝宝跟男票在一路的时候 都邑发现一个神奇的生理现象 那就是:发现男票 丁丁勃起 通俗点讲就是: 硬了 (为了协调文明旁观,接下来喵

  6. NO.6 5款超等火爆的手撕面包,好吃不腻,口感松软,看一遍就能学会

    为防走失、错过出色,请实时 添加星标 哦! 一个专注0根蒂免费学烘焙的平台 微旌旗: bake360 今天分享几款超好吃的手撕面包给人人,无需繁琐的整

  7. NO.7 其实,不到500块的连衣裙就够美了!

    本年的炎天来得太突如其来了吧!一波升温搞得人措手不及。不分南北,北京上海上周末都要破30度了?! Reformation 2019春夏 Kate Dress Urban Outfitters 2

  8. NO.8 紧要通知:如今成就569分以下的高中生,必然要看这篇文章,影

    高考仅剩2个月,你是否还在 学校 刷 题 、讲题、测验中 无限 轮回…… 这种进修方式下,成就一向没有提拔? 前次测验做错的题,此次依旧会做错

Copyright2018.亲亲自媒体资讯站,让大家及时掌握各行各业第一手资讯新闻!