Wpis z mikrobloga

Cześć, zrobiłem sobie stronę: django + react + rest api z django resta
Komponenty sobie renderuje w template django (hybrid app), no i mam sobie formularz, który wysyłam postem i zawiera on user.id
Jak to zabezpieczyć? Przecież ktoś może zmienić w kodzie js user.id i wysłać za innego użytkownika. Używam sobie session auth, wiec miałem pomysł, żeby zrobić endpoint zwracający user.id, ale sam nie wiem.
#programowanie #django #react #api
  • 4
  • Odpowiedz
dodaj weryfikacje na backendzie, request.user.id == user_id

edit: skoro to DRF to bedzie to self.context.user ( ͡° ͜ʖ ͡°) o ile przekazesz context do serializera
  • Odpowiedz
@veracholera: Tak, chcesz mieć single source of truth także backend powinien być zabezpieczony przed manipulacjami ze strony użytkownika, na frontendzie nie zawsze jest to możliwe.

Ale z drugiej strony jeżeli nie przewidujesz użycia tego API z ID innego usera, to po co w ogóle user.id przekazywać? Możesz je zwyczajnie z contextu wyciągać.
Np. widok edycji profilu. Każdy użytkownik będize edytował tylko i wyłącznie swój profil
  • Odpowiedz
@veracholera: Jak masz oauth i token JWT to mozesz przekazac z backendu middlewarem ten token i sprawdzic czy jest walidny oraz kto jest uzytkownikiem, a user.id w ogole nie podawac z frontu i go nie akceptowac. Tym sposobem masz pewnosc ze tylko zalogowany user bedzie cos tam edytowal.
  • Odpowiedz