2012-11-12 2 views
2

CSRF 보호를 구현해야하는 struts2 웹 애플리케이션이 있습니다. statis 양식의 경우 매우 간단합니다. 난 그냥 tokenSession 요격 &을 활성화 한 다음 제출 양식에 <s:token/>을 설정해야합니다. (herehere)HOWTO AJAX 요청을위한 Struts2 애플리케이션에서 CSRF 보호하기

설명하지만 폼을 통해 제출할 필요가없는 POST AJAX 호출 (jQuery를 사용 중입니다)에 CSRF 보호를 사용해야하는 경우 문제가 발생합니다. 이후 AJAX 호출을 할 때 토큰을 다시 사용하는 문제가 있습니다.

모든 포인터 또는 다른 접근 방식이 좋습니다.

답변

2

은 현재 내가 토큰을 생성하여 문제를 해결 한 AJAX 요청의 경우와 같이 정상적인 응답으로 보내기 -

Map<String, String> tokenInfo = Maps.newHashMap(); 
    tokenInfo.put("struts.token.name", TokenHelper.getTokenName()); 
    tokenInfo.put(TokenHelper.getTokenName(), TokenHelper.setToken()); 

&의 util 메소드를 추상화하여 토큰이 활성화 된 조치를 작성하여 페이지를 새로 고치지 않고 반복적으로 실행되는 조치에 대한 응답의 일부로이를 리턴합니다.

아직 우아한 해결책을 찾고 있습니다.

+0

우리는이 문제에도 직면 해 있습니다. 더 나은 솔루션을 찾았습니까? 또한, 귀하의 솔루션에 대해 더 자세히 설명해 주시겠습니까? JSP 파일에서도 변경을 수행합니까? –

0

토큰을 생성하여 아약스 호출의 매개 변수로 사용할 수 없습니까? 후속 AJAX 호출에

, 당신이 사용할 수있는 per-user Token, 반드시

아닌 per-request Token

,

이 같은 SO 대답이 설명 : Do I need a CSRF token for jQuery .ajax()?

+1

고마워요.하지만 역시 이중 제출을 막을 생각이었습니다. "사용자 당"접근 방식은 그렇게 많은 도움이되지 않습니다. – Chantz