2012-10-05 4 views
1

데이터를 장고 사이트에 보내야하는 VB.NET 프로그램을 작성하고 있지만이 사이트는 암호로 보호되어 있습니다. 따라서 먼저 로그인해야합니다. 내가 지금 사용하고 코드입니다 :이 웹 서버에서 403 오류를 반환POST 요청을 사용하여 Django 사이트에 로그인하십시오.

Dim reqT As HttpWebRequest 
Dim resT As HttpWebResponse 
reqT = WebRequest.Create("http://websiteURL/login/") 
reqT.Method = "POST" 

Dim Data As String 
Data = "{""username"":""fakeusername""&""password"":""fakepassword""}" 
Dim credArray As Byte() = Encoding.UTF8.GetBytes(Data) 
reqT.ContentType = "application/x-www-form-urlencoded" 
reqT.ContentLength = credArray.Length 
Dim dataStreamT As Stream = reqT.GetRequestStream() 
dataStreamT.Write(credArray, 0, credArray.Length) 
dataStreamT.Close() 

, 불행하게도 나는 그것을 해결하는 방법을 모르겠어요. 나는 csrf가 실패하거나 POST 데이터가 잘못 포맷되었을 수도 있다고 생각합니다. 어떤 도움을 주시면 감사하겠습니다.

+1

나는 당신이 csrf에 대해 맞다고 생각 하겠지만, 당신의 데이터 역시 재미있게 보입니다. 사용자 이름과 암호 사이에 쉼표가 있어야한다고 생각합니다. Firefox에서 변조와 같은 도구를 사용하고 실제 사용자가 로그인 할 때 게시되는 내용을 정확하게 확인하는 것이 쉬운 일입니다. 그러나 CSRF 없이는 거부 될 것입니다. –

답변

2

나에게 CSRF 보호 기능과 같은 소리가납니다. 장고 CSRF 문서는 여기에 있습니다 :

the How It Works section 당으로

, 당신의 POST 요청이 CSRF 토큰을 함께 전달해야하고, CSRF 쿠키 것이다.

로그인 페이지에 GET 요청을하면 HTML 소스에서 토큰을 가져와야합니다. 너도 쿠키에 접근 할 수있을 것 같아?

+0

이것이 간단하다면 CSRF는 아무런 의미가 없을 것입니다. –

+0

@BurhanKhalid : doh, 나는 명백한 것이 빠져 있음을 알았다. 그에 따라 다시 쓰십시오. –

+0

답변 해 주셔서 감사합니다. 로그인 페이지의 소스를 가져 오도록 사이트를 설정 했으므로 값을 쉽게 제거 할 수 있으므로 "name = 'csrfmiddlewaretoken'value = '' '와 같은 결과를 얻을 수 있습니다. 그걸 내 데이터 변수에 추가 하시겠습니까? – Morag

관련 문제