2014-06-18 1 views
1

우리는 Rails 3 앱에서 페이지 머리글에 csrf_meta_tag을 사용하는 것과 자동으로 생성 된 양식의 두 세트의 CSRF 토큰을 생성하는 페이지가 있습니다. 우리 ERB는 다음과 같습니다한 페이지에 두 개의 CSRF 토큰이 있으면 문제가 발생합니까?

레이아웃 :

<html> 
    <head> 
    <%= csrf_meta_tag %> <%# Generates CSRF tokens %> 
    </head> 
    <body> 
    <%= yield %> 
    </body> 
</html> 

보기 :

<% form_for @my_model do |f| %> <%# Generates more CSRF tokens %> 
    <%= f.submit %> 
<% end %> 

이 만족할 만합니까? 생성 된 제출 버튼 또는 JavaScript를 통해 양식 제출시 문제가 발생할 가능성이 있습니까? 이것이 나쁜 생각 인 경우,이 상황을 처리하기위한 Rails의 방법은 무엇입니까?

+0

몇 가지 실험을 통해 Rails가 모든 토큰에 동일한 값을 주입하는 것처럼 보입니다. 그 행동에 의지 할 수 있을까요? – Kevin

+0

토큰 값이 뷰를 렌더링하기 전에 응용 프로그램 컨트롤러에 의해 제공되기 때문에 이러한 현상이 발생합니다. 따라서 명시 적으로 (<% = csrf_meta_tag %>) 또는 암시 적으로 (단순 양식과 csrf의 공동 기능으로) 소환 될 횟수와 상관없이 동일한보기에서 값이 동일하게됩니다. –

답변

1

두 개의 CSRF 토큰을 사용하면 문제가 발생할 것이라고 생각하지 않습니다. 서버 측에서 이러한 토큰이 일치하는 한 제대로 수행 될 것입니다. 사실 두 개의 임의의 토큰을 사용하는 실제 웹 응용 프로그램이 있습니다. 하나는 URL에 있고 다른 하나는 웹 페이지에 포함되어 있습니다. 그러나 CSRF 공격을 막는 데는 하나의 CSRF 토큰 만 있으면 충분합니다.

관련 문제