복붙노트

[SPRING] Spring 3.1 MVC, Spring Security 3.1 - CSRF 토큰

SPRING

Spring 3.1 MVC, Spring Security 3.1 - CSRF 토큰

현재 나는 스프링 MVC와 Spring Security 형태로 CRSF 토큰을 포함시킬 가능성을 찾고있다. CSR 보안 토큰을 렌더링하고 평가할 수있는 (Spring Security + Spring MVC) 서블릿 모두를 다루는 가장 쉬운 솔루션은 무엇입니까?

스프링 스택에서는이 기본 메커니즘을 사용할 수 없다는 것에 놀랐습니다. (나는 모든 웹 어플리케이션 프레임 워크에 대해 기본적인 것으로 생각한다)

추신 : HDIV를 살펴 봤지만 Spring Security와 함께 사용할 솔루션을 찾을 수 없습니다. (예 : 로그인 폼은 Spring MVC에서 렌더링되고 로그인 요청은 Spring Security에서 처리됨)

해결법

  1. ==============================

    1.Spring 3.1은 RequestDataValueProcessor라는 새로운 인터페이스를 도입했다. 이 인터페이스를 사용하면 CSRF 토큰을 HTTP 양식에 쉽게 등록 할 수 있습니다 (JSP 또는 컨트롤러를 변경하지 않고 자동으로!). 여기에서 자세한 예제를 볼 수 있으며, github의 샘플 코드를 참조하기도합니다. (그래서 여기에서 가져와 응용 프로그램에서 사용할 수 있습니다.)

    Spring 3.1은 RequestDataValueProcessor라는 새로운 인터페이스를 도입했다. 이 인터페이스를 사용하면 CSRF 토큰을 HTTP 양식에 쉽게 등록 할 수 있습니다 (JSP 또는 컨트롤러를 변경하지 않고 자동으로!). 여기에서 자세한 예제를 볼 수 있으며, github의 샘플 코드를 참조하기도합니다. (그래서 여기에서 가져와 응용 프로그램에서 사용할 수 있습니다.)

  2. ==============================

    2.업데이트 (2014 년 1 월) : Spring Security 3.2는 CSRF 토큰 구현을 포함합니다.

    업데이트 (2014 년 1 월) : Spring Security 3.2는 CSRF 토큰 구현을 포함합니다.

    스프링 보안 <= 3.1 :

    CSRF는 Spring Security (Authentication & Authorization)와 아무 관련이 없으므로 둘 다 서로 분리되어 구현 될 수 있습니다.

    필터를 기반으로하는 일부 CRSF 구현이 있습니다. 예를 들어, Tomcat 7 및 Tomcat 6.0.something과 함께 제공되는 것이 있습니다

    내가 그들을 (2011 년 여름에) 사용하려고했을 때 나는 그것이 잘 작동한다고 느끼지 않았다. 그래서 나는 내 자신을 구현합니다.

    EDIT (2012 년 4 월) : My Implementation은 Spring 3.0과 함께 작동하고, Spring 3.1을 사용하고 있다면 Eyal Lupu의 대답을 살펴보고 Spring 3.1 기능을 사용하여 필터 처리가 더 쉽습니다.

    나는 그것을 지금까지 공개하지 않았다 (시간이 없다). 하지만 그럴거야. 다운로드 할 수 있습니다 (이것은 4shared.com을 처음 사용하는 경우 작동합니다).

    구현의 단점은 POST, DELETE, PUT을 제출하는 모든 양식에 명시 적으로 토큰을 추가해야한다는 것입니다.

    JSP (x) :

    xmlns:crsf="http://www.humanfork.de/tags/de/humanfork/security/crsf"
    ...
    <form ...>
       <crsf:hiddenCrsfNonce/>
       ....
    </form>
    

    을 포함한다.

    <filter>
        <filter-name>IdempotentCrsfPreventionFilter</filter-name>
        <filter-class>de.humanfork.security.crsf.IdempotentCsrfPreventionFilter</filter-class>
    </filter>
    
    <filter-mapping>
        <filter-name>IdempotentCrsfPreventionFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    
  3. ==============================

    3.Spring Security 3.2.0.RC1은 CSRF 보호 기능을 제공합니다. AJAX 요청에 대한 솔루션도 포함되어 있습니다.

    Spring Security 3.2.0.RC1은 CSRF 보호 기능을 제공합니다. AJAX 요청에 대한 솔루션도 포함되어 있습니다.

    http://www.springsource.org/node/22675 및 http://spring.io/blog/2013/08/21/spring-security-3-2-0-rc1-highlights-csrf-protection/을 참조하십시오.

  4. from https://stackoverflow.com/questions/9290328/spring-3-1-mvc-spring-security-3-1-csrf-token by cc-by-sa and MIT license