Laravel Türkiye Discord Kanalı Forumda kod paylaşılırken dikkat edilmesi gerekenler!Birlikte proje geliştirmek ister misiniz?
  • Geliştirme
  • ReactJs Csrf ile alakalı kritik bir sorunum var.

Selamlar, Frontend'i react ile yazmaya başladığım bir uygulamada backend hazır ve başladım ancak sorunum ile alakalı bir çok ingilizce ve farklı dillerde kaynak gezdim ancak bir mantıklı çözüm bulamadım. Sorunumun detayı şu;
Backend'de CSRF için bir endpointimiz var ve GET isteği bulunuyoruz CSRF token alıyorum ve ikinci bir istekte bu tokeni kullanıyorum.
Ama bu bana çok mantıklı gelmiyor. her işlemde 1.request olarak CSRF 2.request'te işlem request çok mantıksız geldi bana.
CSRF için nasıl bir işlem yapabilirim belli bir süre zarfında mı almam gerekiyor bir kaç profesyonel sistem inceledim ama bir sonuç alamadım.
teşekkür ederim.

  • mgsmus bunu yanıtladı.
  • mami33 Evet, tek yolu bu ama csrf token oturum başı oluştuğu ve değişmediği için her seferinde istek atıp almanıza gerek yok. O yüzden cookie'de veriliyor.

    Cookie'leri kontrol edin, belki backend Laravel gibi bir XSRF-TOKEN isimli cookie oluşturuyordur. İsmi farklı olabilir, sorun değil, axios ile hangi isme bakması gerektiğini belirleyebiliyorsunuz, varsayılan XSRF-TOKEN.

    mami33 Auth için ne kullanıyorsunuz? Eğer Sanctum kullanıyorsanız ve istekleri axios ile atıyorsanız bir kere /sanctum/csrf-cookie adresine istek attıktan sonra Laravel csrf token barındıran bir cookie oluşturur ve axios her istekte bunu cookie'den alıp otomatik olarak header içine ekler.

    Normalde ise VerifyCsrfToken middleware aracılığı ile Laravel XSRF-TOKEN isimli bir cookie oluşturuyor. Boş bir rota oluşturup ona bile axios ile istek atsanız yine çalışır.

    Aslında her istekde bir yerden alıp eklemeniz lazım ama axios bunu desteklediği için otomatik yapıyor. Axios kullanmıyorsanız ve kullandığınız her ne ise onun XSRF-TOKEN cookie okuma yetisi yoksa bunu sizin yapmanız gerekecek; XSRF-TOKEN cookie değerini okuyup header'a X-XSRF-TOKEN adı ile ekleyeceksiniz.

    selamlar, backend laravel ile değil başka bir şeyle yazılmış. yani bunun tek yoluilk csrf isteği atmak arkasından da normal isteği atmak mı diyorsunuz..

      mami33 Evet, tek yolu bu ama csrf token oturum başı oluştuğu ve değişmediği için her seferinde istek atıp almanıza gerek yok. O yüzden cookie'de veriliyor.

      Cookie'leri kontrol edin, belki backend Laravel gibi bir XSRF-TOKEN isimli cookie oluşturuyordur. İsmi farklı olabilir, sorun değil, axios ile hangi isme bakması gerektiğini belirleyebiliyorsunuz, varsayılan XSRF-TOKEN.

        mgsmus jwt refresh token ile yeniliyor aynı şekilde jwt içerisine csrf i de güncelletsem mantıklı olur değil mi ? belirli zaman aralıklarıyla. token zaten yeniliyor.

          mgsmus peki tokenin kullanım süresi dolunca nasıl bir işlem yapılmalı

            ragmus Refresh token varsa token yenileyebilirsiniz ya da kullanıcının oturumu sonlandırılır, size kalmış. Refresh token yoksa mecburen oturum sonlanacak.

            aynen zaten refresh token yaptım yanına da onu eklerim süper olur. teşekkür ederim.