2011-04-08 4 views
6

나는 특히 로그인 폼에 대해 생각하고 있습니다 :때때로 CSRF 보호 기능을 비활성화 할 수 있습니까?

본질적으로 로그인 양식은 임의의 입력에 대한 조치를 차단합니다. 유효한 사용자 이름과 비밀번호가 없으면 방금 반송됩니다. 이들이 심지어 authenticity_token 또는 이와 유사한 사이트 간 요청 위조 보호 기능을 추가로 필요로하는 이유가 있습니까? 익명 클라이언트 감안할 때

, 그것은 허용되어야 사이트와의 접촉의 첫 번째 점은 유효한 로그인 자격 증명을 POST하는 것입니다 :

나는 로그인 폼이 CSRF도 일반적으로 바람직하지 않을 수있는 하나의 예 경우 궁금 . CSRF는 먼저 클라이언트가 authenticity_token의 기초로 사용되는 익명의 세션 쿠키를 설정하기 위해 GET을 수행하도록 요구함으로써 이러한 직접적인 상호 작용을 방지합니다. 토큰은 로그인 자격 증명으로 다시 게시되어야합니다. 실제 목표는 세션없이 도착한 사용자를 인증하고 자격 증명을 제공하려고 할 때 추가 사전 단계가 중요하지 않은 것처럼 보입니다.

이 시나리오에서 보안 고려 사항이 누락 되었습니까?

답변

1

XSRF 보호 기능이 없으면 공격자는 사용자를 자신의 활동을 추적하는 데 사용할 수있는 악의적 인 계정에 로그인 할 수 있습니다. 이에 대해서는 Robust Defenses for Cross-Site Request Forgery에서 논의됩니다.

클라이언트가 첫 번째 연락 지점으로 로그인 로그인 자격 증명을 사용할 수 있어야하는 이유가 없습니다. 웹 인터페이스의 경우, 가장 실제적인 경우 클라이언트는 양식을 검색하기 위해 로그인 페이지를 가져야합니다.

+0

링크를 제공해 주셔서 감사합니다. 웹 서비스 API는 클라이언트가 자격 증명을 제출하기 전에 먼저 로그인 페이지를 가져야하지 않아도되는 합리적인 장소라고 생각합니다. –

+0

웹 서비스이고 미래의 요청에 대한 응답을 토큰으로 보내면 (쿠키를 설정하지 않음) 문제가되어서는 안되며, 이는 사용자에게 부작용을 유발하지 않기 때문입니다. – Gelatin

2

굉장한 질문입니다! 그것은 잠시 동안 내 머리를 긁적 거렸다.

공격자가 다른 방법으로 피해자의 암호를 이미 획득했지만 웹 사이트에 대한 액세스 권한이없는 경우는 어떻습니까? 초기 페이지에이 www.evil.com에 가고 있습니다에 그는 트릭 피해자 :이 사이트에 피해자를 인증하는 피해자의 브라우저를 설득

<image src="http://portal.internal/login.php?user=root&password=hunter2"/> 

. 그는 다른 방법으로이 없기 때문에,이 경우

<image src="http://portal.internal/deleteEverything.php/> 

, 공격자 해야 액세스 내부 사이트를 얻을 수 사용 CSRF : 그런 다음, www.evil.com의 다른 페이지에, 또 다른 이미지 태그가 그것에 접근하십시오. 또한이 CSRF 공격은 실제로 사이트에 네트워크 액세스 권한이있는 사용자 만 시스템에 계정이있는 사용자에 대해 실행될 필요가 없습니다.

+0

이런 행동은 처음에는 http GET 요청에 의해 접근 할 수 없어야합니다. 특히 파괴적인 것들입니다. 내 생각에 CSRF보다 훨씬 큰 문제입니다. –

+0

참. 그러나 다시 한번, 이와 같은 GET 가능 행동이 존재하지 않는다고 가정하면 더욱 악화됩니다. –

+0

이것은 일반적으로 Rails 애플리케이션, 특히 Rails 3 애플리케이션에서 기본 레일 규칙을 따르는 OK 가정입니다. – yfeldblum

관련 문제