이 질문은 코드 작성 방법에 관한 직접적인 보험보다 재보험입니다. autodidact로서 나는 전문가에게 그런 것들을 요청할 많은 가능성이 없었기 때문에 여기에서 시도한다.어떤 경우 CSRF 면제가 위험 할 수 있습니까?
나는 장고 - 문서의 문서 (https://docs.djangoproject.com/en/1.3/ref/contrib/csrf/) 및 해당 페이지에 대한 몇 가지 정보를 읽고 : http://cwe.mitre.org/top25/#CWE-352
는 지금까지 내가 이해 한대로, 장고가에 토큰 (핀 코드의 일종)를 제공 사용자. 그리고 실제로 그 사람임을 확인하기 위해, 그는 다음에 요청할 때 그것을 돌려 주어야합니다. 그리고 Google의 몇몇 사람들은 아약스 요청으로도 이것이 가능하다는 것을 알았습니다. 따라서 우리는 1.2.6 이후에도 새로운 정책을 보호해야합니다. 그리고 CSRF는 다른 누군가 인 것처럼 보이는 (악성 코드, 위험한 코드, 손상된 파일 등) 누군가에게 내 정보를 제공하는 것에 관한 것입니다.
그래서 나는이 같은 일부 코드가있는 경우 : 내가 지정된 값을 변환하기 전에 데이터베이스 또는 내 응용 프로그램의 어떤 부분에 대한 액세스 권한을 포기하지 않을거야으로 저장해야합니다
@csrf_exempt
def grab(request):
"""
view to download an item
POST because it stores that a user has downloaded this item
"""
item_id = request.POST.get('item', None)
if not loop: return HttpResponseBadRequest('no item id provided')
item = Item.objects.get(pk=int(item_id))
정수. 파일을 다운로드하는 사람의 기록을 잘못하면 너무 많은 피해를 입지 않습니다 (이 경우 거의 없습니다). 나는이 견해에 의존하는 법안을 작성한다고 가정 할 때, CSRF 면제는 다양하고 나쁜 생각 일 것입니다 (맞습니까?). 누군가가 사용자로부터 CSRF 토큰을 훔쳐 아직도 날 (또는 사용자) 트릭을 사용할 수없는 이유를
는 또한 이해가 안 돼요. 그래서이 주제에 대해 몇 가지 질문이 있습니다 :
1) 위의 내 가정은 무엇입니까?
2) 누군가가 말해 줄 수, 무엇을 (그리고 몇몇 그리 좋은 사람이 더러운 트릭을 할 수 위의보기를 사용할 수 있습니다 아마도 방법), 그리고 그들이 무엇을 할 것인가? CSRF는 man-in-the-middle 공격, 그것은 단지 관련이의 예
3), 또는 그것은 완전히 다른 뭔가?
4) 이러한 위험에 대해 더 자세히 읽어 보려면 귀중한 링크가 필요합니까?
어쩌면이 질문 중 일부는 너무 잘 알려지지는 않지만 나는 그 문제를 해결하려고합니다. 누군가가 나를 도울 수 있다면 정말 기뻐할 것입니다.
터널 끝 부분에 희미한 빛이 나타납니다. 따라서 서버에 악의적 인 것을 보내려면 먼저 일부 사용자 브라우저에 데이터를 보내야합니다. 이 데이터에서 공격받을 서버에 보내는 자동으로 게시되는 양식을 숨 깁니다. 나는 거기에 계좌를 가지고 있기 때문에 그 서버에 사용자가 로그인했다고 가정한다. 서버가 토큰을 확인하지 않으면 요청이 합법적이라고 믿어야합니다. 적어도 나는 그것이 어떻게 작동하는지, 그리고 MIM과 XSS에 선을 그릴 위치에 대해 생각해 봤다. 고마워. – marue
@marue CSRF는 악성 데이터를 서버로 보내는 것이 아닙니다. 주로 공격 사이트가 피해자를 대신하여 합법적이고 실제적인 요청을 보낼 수 있으므로 가장 (impersonation)입니다. 도청, MITM 및 XSS는 완화 된 CSRF 토큰을 파악하는 수단 일뿐입니다 (대부분의 인증 관리 체계는 쿠키 기반 세션을 사용하기 때문에 세션 ID를 얻을 수도 있습니다). – Gumbo
그래서 CSRF는 당신이 아닌 다른 사람인 척하는 "유일한"것입니까? 중요하지 않은 것은 아니지만 다른 모든 것은 다른 공격 경로입니다. – marue