亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 網站 > 幫助中心 > 正文

spring security中的csrf防御原理(跨域請求偽造)

2024-07-09 22:42:33
字體:
來源:轉載
供稿:網友

什么是csrf?

csrf又稱跨域請求偽造,攻擊方通過偽造用戶請求訪問受信任站點。CSRF這種攻擊方式在2000年已經被國外的安全人員提出,但在國內,直到06年才開始被關注,08年,國內外的多個大型社區和交互網站分別爆出CSRF漏洞,如:NYTimes.com(紐約時報)、Metafilter(一個大型的BLOG網站),YouTube和百度HI......而現在,互聯網上的許多站點仍對此毫無防備,以至于安全業界稱CSRF為“沉睡的巨人”。

舉個例子,用戶通過表單發送請求到銀行網站,銀行網站獲取請求參數后對用戶賬戶做出更改。在用戶沒有退出銀行網站情況下,訪問了攻擊網站,攻擊網站中有一段跨域訪問的代碼,可能自動觸發也可能點擊提交按鈕,訪問的url正是銀行網站接受表單的url。因為都來自于用戶的瀏覽器端,銀行將請求看作是用戶發起的,所以對請求進行了處理,造成的結果就是用戶的銀行賬戶被攻擊網站修改。

解決方法基本上都是增加攻擊網站無法獲取到的一些表單信息,比如增加圖片驗證碼,可以杜絕csrf攻擊,但是除了登陸注冊之外,其他的地方都不適合放驗證碼,因為降低了網站易用性

相關介紹:

http://baike.baidu.com/view/1609487.htm?fr=aladdin

spring-servlet中配置csrf

 <!-- Spring csrf 攔截器 --> <mvc:interceptors>  <mvc:interceptor>   <mvc:mapping path="/login" />   <bean class="com.wangzhixuan.commons.csrf.CsrfInterceptor" />  </mvc:interceptor> </mvc:interceptors>

在類中聲明Csrf攔截器,用來生成或去除CsrfToken

import java.io.IOException;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.logging.log4j.LogManager;import org.apache.logging.log4j.Logger;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.method.HandlerMethod;import org.springframework.web.servlet.ModelAndView;import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;import com.wangzhixuan.commons.scan.ExceptionResolver;import com.wangzhixuan.commons.utils.WebUtils;/** * Csrf攔截器,用來生成或去除CsrfToken *  * @author L.cm */public class CsrfInterceptor extends HandlerInterceptorAdapter { private static final Logger logger = LogManager.getLogger(ExceptionResolver.class);  @Autowired  private CsrfTokenRepository csrfTokenRepository;  @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {  HandlerMethod handlerMethod = (HandlerMethod) handler;  // 非控制器請求直接跳出  if (!(handler instanceof HandlerMethod)) {   return true;  }  CsrfToken csrfToken = handlerMethod.getMethodAnnotation(CsrfToken.class);  // 判斷是否含有@CsrfToken注解  if (null == csrfToken) {   return true;  }  // create、remove同時為true時異常  if (csrfToken.create() && csrfToken.remove()) {   logger.error("CsrfToken attr create and remove can Not at the same time to true!");   return renderError(request, response, Boolean.FALSE, "CsrfToken attr create and remove can Not at the same time to true!");  }  // 創建  if (csrfToken.create()) {   CsrfTokenBean token = csrfTokenRepository.generateToken(request);   csrfTokenRepository.saveToken(token, request, response);   // 緩存一個表單頁面地址的url   csrfTokenRepository.cacheUrl(request, response);   request.setAttribute(token.getParameterName(), token);   return true;  }  // 判斷是否ajax請求  boolean isAjax = WebUtils.isAjax(handlerMethod);  // 校驗,并且清除  CsrfTokenBean tokenBean = csrfTokenRepository.loadToken(request);  if (tokenBean == null) {   return renderError(request, response, isAjax, "CsrfToken is null!");  }  String actualToken = request.getHeader(tokenBean.getHeaderName());  if (actualToken == null) {   actualToken = request.getParameter(tokenBean.getParameterName());  }  if (!tokenBean.getToken().equals(actualToken)) {   return renderError(request, response, isAjax, "CsrfToken not eq!");  }  return true; }  private boolean renderError(HttpServletRequest request, HttpServletResponse response,    boolean isAjax, String message) throws IOException {  // 獲取緩存的cacheUrl  String cachedUrl = csrfTokenRepository.getRemoveCacheUrl(request, response);  // ajax請求直接拋出異常,因為{@link ExceptionResolver}會去處理  if (isAjax) {   throw new RuntimeException(message);  }  // 非ajax CsrfToken校驗異常,先清理token  csrfTokenRepository.saveToken(null, request, response);  logger.info("Csrf[redirectUrl]:/t" + cachedUrl);  response.sendRedirect(cachedUrl);  return false; } /**  * 用于清理@CsrfToken保證只能請求成功一次  */ @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,   ModelAndView modelAndView) throws Exception {  HandlerMethod handlerMethod = (HandlerMethod) handler;  // 非控制器請求直接跳出  if (!(handler instanceof HandlerMethod)) {   return;  }  CsrfToken csrfToken = handlerMethod.getMethodAnnotation(CsrfToken.class);  if (csrfToken == null || !csrfToken.remove()) {   return;  }  csrfTokenRepository.getRemoveCacheUrl(request, response);  csrfTokenRepository.saveToken(null, request, response); }}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
午夜美女久久久久爽久久| 亚洲成人免费网站| 国产精品久久av| 亚洲最新在线视频| 国产一区二区视频在线观看| 欧美激情一区二区三区在线视频观看| 亚洲国产精品免费| 欧美一级大片在线免费观看| 亚洲自拍偷拍区| 国产亚洲综合久久| 欧美激情2020午夜免费观看| 亚洲桃花岛网站| 久久99久久亚洲国产| 国产精品av免费在线观看| 亚洲精品v天堂中文字幕| 精品成人国产在线观看男人呻吟| 亚洲精品国产精品国自产在线| www.美女亚洲精品| 国产美女91呻吟求| 欧美激情免费看| 全亚洲最色的网站在线观看| 亚洲欧美在线播放| 日本精品va在线观看| 久久免费视频在线观看| 国产精品丝袜高跟| 欧美精品久久久久| 欧日韩在线观看| 日韩欧美aⅴ综合网站发布| 欧美精品在线观看| 精品久久久久人成| 在线不卡国产精品| 久久久久久亚洲精品不卡| 亚洲成色777777在线观看影院| 狠狠久久亚洲欧美专区| 日韩精品在线播放| 91精品国产乱码久久久久久蜜臀| 少妇高潮 亚洲精品| 国产成人极品视频| 久久久精品视频在线观看| 欧美日韩福利在线观看| 精品国产91乱高清在线观看| 69**夜色精品国产69乱| 久久久久久12| 国产精品露脸自拍| 中文字幕在线视频日韩| 日韩av网站大全| 久久夜色精品国产欧美乱| 2020久久国产精品| 欧美电影在线观看完整版| 日韩视频免费在线观看| 久久精品久久久久久国产 免费| 亚洲精品视频久久| 国产精品27p| 国产日韩欧美视频| 精品国产自在精品国产浪潮| 91夜夜未满十八勿入爽爽影院| 国产91精品高潮白浆喷水| 国产精品高精视频免费| 欧美激情精品久久久久久蜜臀| 日韩黄色高清视频| www.日韩视频| 亚洲a级在线播放观看| 亚洲男女性事视频| 久久精品久久久久电影| 久久久久久久久久久久久久久久久久av| 国产精品一区av| 欧美大片va欧美在线播放| 久久久久久久久久久国产| 日韩在线观看免费网站| 亚洲视频一区二区| 欧美夫妻性生活xx| 日韩av不卡电影| 81精品国产乱码久久久久久| 精品久久久一区二区| 国产精品黄色av| 亚洲美女在线观看| 97香蕉久久超级碰碰高清版| 久久天堂电影网| 激情成人在线视频| 欧美日韩国产限制| 精品久久久久久久久久久久| 欧美一级大胆视频| 欧美猛交免费看| 欧美一区深夜视频| 亚洲一区二区三区乱码aⅴ| 最近2019中文字幕大全第二页| 亚洲国产精品中文| 精品国产网站地址| 亚洲精品成人久久电影| 欧美在线性视频| 久久久成人的性感天堂| 97精品国产aⅴ7777| 欧美日韩国产限制| 激情亚洲一区二区三区四区| 91久久国产精品| 久热精品在线视频| 欧美综合在线第二页| 国产亚洲免费的视频看| 国产欧美日韩免费看aⅴ视频| 亚洲а∨天堂久久精品喷水| 国产乱肥老妇国产一区二| 亚洲精品第一国产综合精品| 色偷偷888欧美精品久久久| 这里只有精品丝袜| 欧美精品一二区| 日韩电影在线观看永久视频免费网站| 欧美精品少妇videofree| 日韩欧美国产成人| 伊人久久久久久久久久| 亚洲一区二区在线播放| 国模私拍一区二区三区| 亚洲天堂av女优| 久久在精品线影院精品国产| 亚洲国产一区二区三区四区| 亚洲欧美日韩国产精品| 成人春色激情网| 亚洲一品av免费观看| 亚洲最大激情中文字幕| 91久久久亚洲精品| 91老司机精品视频| 精品偷拍各种wc美女嘘嘘| 91久久国产精品| 亚洲精品美女免费| 亚洲老板91色精品久久| 欧美国产日韩视频| 7777kkkk成人观看| 国产精品久久久av| 亚洲永久在线观看| 久久久噜噜噜久久| 久久视频在线播放| 亚洲欧美日韩精品久久奇米色影视| 高潮白浆女日韩av免费看| 国产精品∨欧美精品v日韩精品| 亚洲自拍高清视频网站| 欧美午夜性色大片在线观看| 日韩免费在线视频| 日韩中文字幕欧美| 久久夜色精品国产亚洲aⅴ| 国产+成+人+亚洲欧洲| 久久国内精品一国内精品| 这里只有精品久久| 国产日产亚洲精品| 91久久在线观看| 久久亚洲精品视频| 欧美一级电影免费在线观看| 国产在线久久久| 日韩国产精品视频| 少妇av一区二区三区| 国产精品福利在线| 欧美精品制服第一页| 色老头一区二区三区在线观看| 成人久久久久久| 亚洲午夜小视频| www.日韩不卡电影av| 日韩亚洲欧美中文高清在线| 懂色av影视一区二区三区| 日韩电影大全免费观看2023年上| 91久久精品美女高潮| 亚洲天堂男人天堂女人天堂| 亚洲女性裸体视频| 精品国产老师黑色丝袜高跟鞋| 亚洲精品视频在线观看视频| 91丨九色丨国产在线| 亚洲第一在线视频|