• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Python, moja aplikacja w Django i moduł requests ( problem z csrf )

VPS Starter Arubacloud
+2 głosów
435 wizyt
pytanie zadane 13 kwietnia 2020 w Python przez Jakub 0 Pasjonat (23,120 p.)
zamknięte 13 kwietnia 2020 przez Jakub 0

Hej, oto mój blog w django ( zrobiony przy pomocy poradnika ). Próbuje zalogować się na moje konto z użyciem modułu requests:

import requests

payload = {
    'username': 'jakub',
    'password': '...',
    'csrfmiddlewaretoken': 'q3W7zNuJ5IzbCfCjC8vgXfl7lEvmgD6KBaMtha2S54MpYcT0aFNYNeA6XMe6ty2r'
}

r = requests.post('http://jakubes123.pythonanywhere.com/login/', data=payload) 

print(r.status_code)


Wiem że django wymaga by z formularzem metodą post został wysłany csrf token. Jak widać dodałem go. Wszystko zgadza się z oryginalnym formularzem:

Mimo wszystko wciąż otrzymuje status 403.

Wiecie może o czym mogłem zapomnieć? Dziękuje i pozdrawiam :)

komentarz zamknięcia: problem rozwiązany

1 odpowiedź

+1 głos
odpowiedź 13 kwietnia 2020 przez adrian17 Ekspert (349,240 p.)
wybrane 13 kwietnia 2020 przez Jakub 0
 
Najlepsza
Token CSRF jest powiązany z sesją. Nie możesz go tak po prostu wyciągnąć z przeglądarki i wcisnąć do losowego zapytania - ba, to jest jedna z rzeczy do których zapobiegania służy.

Proponuję:

- otworzyć sesję request'ów (ogólnie bez sesji Twoje zapytania logowania by wiele nie dało)

- zrobić zapytanie na stronę logowania

- wyciągnąć stamtąd wartość tokenu

- wrzucić go do zapytania logowania
1
komentarz 13 kwietnia 2020 przez Jakub 0 Pasjonat (23,120 p.)

Dzięki!

Wystarczyło poczytać czym w ogóle jest csrf token :)

napisałem takie coś i działa:


s = requests.Session()
rget = s.get('http://jakubes123.pythonanywhere.com/login/');

payload = {
    'username': 'jakub',
    'password': '...',
    'csrfmiddlewaretoken': rget.cookies['csrftoken']
}

r = s.post('http://jakubes123.pythonanywhere.com/login/', data=payload) 

serdecznie pozdrawiam laugh

1
komentarz 13 kwietnia 2020 przez Arkadiusz Sikorski Pasjonat (20,160 p.)
edycja 13 kwietnia 2020 przez Arkadiusz Sikorski

Od siebie tylko dorzucę jeszcze to, może na przyszłość się przyda.

Jeśli przypadek na to pozwala, to można użyć dekoratora csrf_exempt dla widoku, wtedy token CSRF nie będzie wymagany. Jest to wygodne, jeśli widok na przykład nic nie modyfikuje i możemy sobie pozwolić na niższy poziom bezpieczeństwa (warto jednak być wtedy w 100% pewnym, że można tak zrobić). Więcej szczegółów odnośnie tego, kiedy można sobie na to pozwolić tutaj.

Podobne pytania

0 głosów
0 odpowiedzi 71 wizyt
0 głosów
1 odpowiedź 299 wizyt
0 głosów
1 odpowiedź 509 wizyt
pytanie zadane 26 sierpnia 2018 w Python przez Eliro Stary wyjadacz (12,160 p.)

92,963 zapytań

141,928 odpowiedzi

321,161 komentarzy

62,297 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...