>  기사  >  Java  >  SpringSecurity의 CSRF 공격 처리 방법 소개

SpringSecurity의 CSRF 공격 처리 방법 소개

不言
不言앞으로
2019-03-06 15:37:513291검색

이 글은 Django의 FBV와 CBV에 대한 예시 설명을 제공합니다. 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.

CSRF 취약점의 현재 상태

CSRF(교차 사이트 요청 위조) 교차 사이트 요청 위조(원클릭 공격 또는 세션 라이딩이라고도 함)는 종종 CSRF 또는 XSRF로 약칭되기도 하며 웹사이트를 악의적으로 사용하는 행위입니다. XSS(Cross-Site Scripting)처럼 들리지만 사이트 내의 신뢰할 수 있는 사용자를 악용하는 XSS나 신뢰할 수 있는 사용자의 요청으로 가장하여 신뢰할 수 있는 웹사이트를 악용하는 CSRF와는 매우 다릅니다. XSS 공격과 비교할 때 CSRF 공격은 인기가 덜하고(따라서 이를 방지할 리소스도 매우 부족함) 예방하기 어려운 경향이 있으므로 XSS보다 더 위험한 것으로 간주됩니다.
CSRF는 웹 브라우저에 의존하는 난독화된 대리 공격입니다.

POM 종속성

<!-- 模板引擎 freemarker -->
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
<!-- Security (只使用CSRF部分) -->
<dependency>
  <groupId>org.springframework.security</groupId>
  <artifactId>spring-security-web</artifactId>
</dependency>

구성 필터

@SpringBootApplication
public class Application {

  public static void main(String[] args) {
    SpringApplication.run(Application.class, args);
  }
  
  /**
   * 配置CSRF过滤器
   *
   * @return {@link org.springframework.boot.web.servlet.FilterRegistrationBean}
   */
  @Bean
  public FilterRegistrationBean<CsrfFilter> csrfFilter() {
    FilterRegistrationBean<CsrfFilter> registration = new FilterRegistrationBean<>();
    registration.setFilter(new CsrfFilter(new HttpSessionCsrfTokenRepository()));
    registration.addUrlPatterns("/*");
    registration.setName("csrfFilter");
    return registration;
  }
}

양식 요청에 CSRF의 숨겨진 필드 추가

<input name="${(_csrf.parameterName)!}" value="${(_csrf.token)!}" type="hidden" />

AJAX 요청에 헤더 추가

xhr.setRequestHeader("${_csrf.headerName}", "${_csrf.token}");

jQuery 전역 구성을 위한 Ajax

아아아아

위 내용은 SpringSecurity의 CSRF 공격 처리 방법 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 segmentfault.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제