2015-01-21 1 views
2

이 오류를 보려면 쿠키를 얻거나 설정하기 위해 두 개의 브라우저와 일부 플러그인을 열어야합니다.Django - sessionid 쿠키 - 보안 오류입니까?

당신은 장고 1.7 관리자 사이트 (/admin)에 액세스에서 새 프로젝트를 생성하고 첫 broser에에 정상적으로 로그인하여 sessionidcsrftoken 쿠키를 얻고 두 번째 브라우저 로그인 페이지로 설정하고 무작위로 설정하면 사용자 및 암호를 입력하면 CSRF 오류가 발생하고 브라우저에 다시 로그인하면 로그인 한 것입니다.

어떻게 피할 수 있습니까?

+0

당신이 다른 브라우저로 데이터를 복사하지 마십시오! 이 데이터는 보안을 제공하는 비밀 정보입니다. 로그인 자격 증명을 보내는 것과 비슷합니다. –

답변

7

다른 브라우저에 sessionid 쿠키를 복사하고 /admin을 탐색하여 동일한 결과를 얻을 수 있다고 가정합니다. 이 문제를 재현하려면 csrftoken이 필요하지 않습니다. 그것은 sessionid 도둑질이라고 불리고 내가 아는 모든 프레임 워크는 이런 종류의 공격에 취약합니다.

이를 피하려면 SESSION_COOKIE_SECURE = true (기본값은 False)로 설정하여 중간자 공격으로부터 세션 ID 쿠키를 보호하십시오. 또한 프로덕션 서버에 ssl certificate를 설치해야합니다. 그런 다음 모든 http:// 요청을 https://으로 리디렉션하도록 구성하십시오. S의 https는 의 보안의 약자로, 이는 클라이언트와 서버 간의 모든 트래픽이 암호화되어 클라이언트와 서버 (클라이언트의 ISP, 서버의 호스팅 제공 업체, 프록시 등)간에 아무 데이터도 읽을 수 없음을 의미합니다. 세션 쿠키 값 포함.

= True (기본값)를 사용하면 세션 쿠키가 도용되지 않도록 XSS을 통해 보호 할 수 있습니다. HTTPONLY는이 쿠키가 각 HTTP 요청과 함께 전송되지만 자바 스크립트를 통해 클라이언트의 브라우저에서 액세스 할 수 없음을 의미합니다. 따라서 일부 악성 코드 자바 스크립트가 클라이언트 브라우저에서 실행되는 경우 세션 쿠키에 액세스 할 수 없습니다. 보안 장고 서버를 구성하는 방법에 대한

좋은 자습서는 여기에서 찾을 수 있습니다 : https://security.stackexchange.com/a/8970