2012-04-03 3 views
2

나는 Django's comments framework이 블로그 나 artcile 아래에 일반적으로 표시되는 것과 같이 익명의 공개 댓글을 위해 디자인되었다는 것을 알고 있습니다. 즉, 누구나 의견을 게시 할 수 있습니다.Django의 댓글 프레임 워크와 CSRF

로그인 한 사용자 만 댓글을 표시 할 수 있도록 댓글 프레임 워크를 사용하고 있습니다. I did was modify the form.htmlname, URLemail 필드를 숨 깁니다 (보안 필드는 그대로 유지). 따라서 사용자는 comment 필드 만 볼 수 있습니다. Django의 주석은 이미 타임 스탬프 확인, 허니팟 필드 및 안티 이중 게시 기능과 같은 멋진 보안 기능을 가지고 있으므로 사용하고 싶습니다. 사용자 정보는 request.userRequestContext에서 가져와서 comment.user.get_full_name에 대한 사용자 정보를 comment.name 또는 comment.user.emailcomment.email에 대한 것으로 보냅니다.

또한 장고의 CSRF 보호에 대해 읽어보기 시작합니다. 대부분의 경우 사람들은 CSRF가 어떻게 해커가 자신의 쿠키 또는 무엇인가를 사용하여 로그인 한 사용자의 은행 계좌에서 돈을 이체하는 것을 방지하는 방법에 대해 이야기합니다.

내 경우 CSRF는 사람들이 다른 사용자로 게시하지 못하도록합니까? 즉, 해커가 자신의 POST 양식을 만들고 다른 사람을 위조하여 다른 user.pk에 게시 할 수 있습니까?

답변

3

질문에 직접 대답하려면 no, CSRF는 해커가 다른 사용자 인 것처럼 가장하여 코멘트를 제출하는 것을 허용하지 않습니다. 침입자는 실제 로그인 한 사용자가 자신의 의견을 제출하도록 허용 할 수 있습니다.

CSRF는 리소스에 대한 액세스 권한이없는 사람이 액세스 권한이있는 사람을 속이는 공격입니다.

예를 들어, CSRF 보호는 누군가가 사용자를 속여서 스팸 또는 맬웨어 링크가 포함 된 설명을 게시하지 못하게 할 수 있습니다. 또는 사용자가 속임수를 사용하여 웹 서버를 손상 시키거나 유효성 검사 프로세스를 통과하여 데이터베이스를 손상 시키거나 다른 방법으로 사이트를 손상시킬 수있는 코드를 포함하도록 요청할 수 있습니다.

따라서 CSRF 보호 기능을 사용하지 않으면 누군가가 이론적으로 로그인 한 사용자를 속여서 실제로 작성하지 않은 설명을 제출할 수 있습니다.

CSRF 보호 기능을 사용하면 장고는 사이트의 실제 양식을 통해 제출 된 실제 데이터가 아니라는 것을 감지하고이를 거부합니다.

+0

해커가 등록하고 성공적으로 로그인하면 의견을 게시하는 동안 POST 응답을 수정하고 사용자 ID를 자신 이외의 것으로 변경합니다 (단, CSRF와 동일하게 유지합니다). 다른 누군가와 의견을 올릴 수 없습니까? – hobbes3

+0

그 뜻은, 단순히 사용자의 POST에서'comment.user'를 무시하고'views.py'에서'comment.user = request.user.pk'와 같은 것을 선언해야합니까? – hobbes3

+0

@ hobbes3 네, 그건 그것이 가짜가되는 것을 피하는 방법입니다. – agf

관련 문제