2012-09-07 2 views
4

내 세션에 active_record_store와 함께 Rails 3.2.3을 사용하고 있습니다.CSRF 토큰 세션 재설정

레일스의 CSRF 토큰은 세션에 저장되므로 reset_session이 호출되거나 어떤 이유로 세션이 삭제되지 않는 한 다시 설정하면 안됩니다.

그러나 원격 양식이 아약스를 통해로드되는 특정 위치에는 해당 페이지의 META 태그에 지정된 것과 다른 진위 토큰이 들어 있습니다. 따라서 해당 양식 제출시 유효하지 않은 토큰 오류 및 reset_session이 발생합니다. [: _ csrf_token] 파괴지고 새로운 토큰을 생성

def form_authenticity_token 
    session[:_csrf_token] ||= SecureRandom.base64(32) 
end 

나는 세션이 왜 세션을가는 유효한을 위해 그림 할 수없는 무엇입니까?

+0

많은 사냥을 한 후에 마침내이 문제를 파악했습니다. 나는 모델 객체를 세션에 직접 저장하고 있었지만 크기 제한이 65KB 인 활성 레코드 세션 저장소를 사용한 후에도 세션이 4kb 이후에 자르면 CRSF 토큰이 지워지고 새 메시지가 생성되었습니다. 예! Blunder ... 달리 할 이유가 없다면 모델 객체를 세션에 저장하지 마십시오. 어쨌든 아직도 활성 레코드 세션 저장소가있는 후에도 더 큰 개체를 세션에 저장할 수 없었던 이유를 알아 내려고했습니다. – Ravi

+0

질문에 답하십시오. 그래서 그것의 폐쇄. 감사. – Roger

답변

2

많은 사냥을 한 후에 마침내이 문제를 파악했습니다. 나는 모델 객체를 세션에 직접 저장하고 있었지만 크기 제한이 65KB 인 활성 레코드 세션 저장소를 사용한 후에도 세션이 4kb 이후에 자르면 CRSF 토큰이 지워지고 새 메시지가 생성되었습니다. 네! Blunder ... 달리 할 이유가 없다면 모델 객체를 세션에 저장하지 마십시오. 어쨌든 아직도 활성 레코드 세션 저장소가있는 후에도 더 큰 개체를 세션에 저장할 수 없었던 이유를 알아 내려고했습니다.

+0

안녕하세요 Ravi, 저는 csfr 토큰 및 세션과 비슷한 문제가있었습니다. 교차 도메인 사이트의 iframe에 앱을로드하려고했습니다. 부모 사이트가 다시로드되면 앱의 세션이 지워집니다. 세션을 쿠키 (단지 user_id)에 저장하고있었습니다. 이 문제는 해결되지 않았습니다. 이것에 대한 당신의 생각을 알고 싶을뿐입니다. –