Node.js'de csrf token bilgisi gitmiyor

enma

Hectopat
Katılım
9 Mayıs 2022
Mesajlar
25
Daha fazla  
Cinsiyet
Erkek
Merhaba, form türü ' enctype="multipart/form-data" ' olunca csrf token yapısı neden çalışmıyor bilen var mı? Node.js'de csurf kullanıyorum bunun için. Hem ınput'un içerisinde hem de query olarak token bilgisini geçmeyi denedim ama çalışmıyor bir türlü. Invalid token diyor sürekli. Sanırım Multer'dan dolayı ama emin değilim. Yardımcı olabilecek biri var mı?
 
Son düzenleyen: Moderatör:
Middleware sırasında multer mı önce geliyor, csurf mü? Genelde multer'ın CSRFçiden önce çalışması lazım ki CSRF token'ini okuyabilsin. Eğer bu da çözmezse şu formun HTML'ini, csurf ve multer'ı nasıl ayarladığını ve o POST isteğini karşılayan kısmın kodunu atın hocam.
 
Middleware sırasında multer mı önce geliyor, csurf mü? Genelde multer'ın CSRFçiden önce çalışması lazım ki CSRF token'ini okuyabilsin. Eğer bu da çözmezse şu formun HTML'ini, csurf ve multer'ı nasıl ayarladığını ve o POST isteğini karşılayan kısmın kodunu atın hocam.
Ekran görüntüsü 2025-05-25 200403.png

Ekran görüntüsü 2025-05-25 200425.png
Ekran görüntüsü 2025-05-25 200519.png


Bu arada formdan bu bilgiyi silince: ' enctype="multipart/form-data ' resimler olmadan form düzgün çalışıyor, token gelip gidiyor. Ayrıca routes'da ki csrf middelware'ı req.csfrToken()'i res.locals'e aldığım bir kod sadece, başka bir şey yok. Bu middleware sırasınıda 1.5 gündür gpt ve claude ile tartışıyorum, neredeyse hepsinin sırasıyla oynayıp denedim.
 
Son düzenleme:
Hocam birkaç önemli nokta gözüme çarptı.

Eki Görüntüle 2498907

CSRF inputu neden form etiketinin dışında? Onu içeri al. En başta bunu bi düzeltelim, çünkü token gerçekten hiç gönderilmiyor olabilir.
Denedim. Formun içerisinde ve action içerisinde belki yüzlerce kez denedim, en sonda formun dışına alıp bir de böyle deneyim dedim. Şu an senin dediğin gibi tekrar içeriye aldım.
 
Denedim. Formun içerisinde ve action içerisinde belki yüzlerce kez denedim, en sonda formun dışına alıp bir de böyle deneyim dedim. Şu an senin dediğin gibi tekrar içeriye aldım.
Peki, süper. Token'ı query parametresi olarak göndermeyi denedin mi? Ve session middleware'ı düzgün çalışıyor mu? req.session'u loglayarak session'ın var olup olmadığını kontrol edebilirsin.
 
Peki, süper. Token'ı query parametresi olarak göndermeyi denedin mi? Ve session middleware'ı düzgün çalışıyor mu? req.session'u loglayarak session'ın var olup olmadığını kontrol edebilirsin.
Evet denedim, şu şekilde çok denedim ama olmadı: '
<form class="form" method="post" enctype="multipart/form-data" action="/hub/add-anime?_csrfToken=<%=csrfToken%>">'. Ayrıca evet session çalışıyor. Tokende çalışıyor zaten. Formun içerisine geliyor, görüyorum. Üstte de dediğim gibi aynı formu, csrf token ile multer kullanmadan başarıyla gönderebiliyorum. Sadece işin içerisine multer girince 'invalid token' diyor.
 
Evet denedim, şu şekilde çok denedim ama olmadı: '
<form class="form" method="post" enctype="multipart/form-data" action="/hub/add-anime?_csrfToken=<%=csrfToken%>">'. Ayrıca evet session çalışıyor. Tokende çalışıyor zaten. Formun içerisine geliyor, görüyorum. Üstte de dediğim gibi aynı formu, csrf token ile multer kullanmadan başarıyla gönderebiliyorum. Sadece işin içerisine multer girince 'invalid token' diyor.
Anlıyorum hocam ancak attığınız kodda çok ama çok önemli bir detay var, csurf middleware'i token'ı query parametresi olarak beklerken default olarak _csrf ismini arar. Sen _csrfToken olarak göndermişsin. Yani csurf yüksek ihtimalle req.query._csrf diye bir şeyi arıyor ve bulamayınca da "invalid token" diyor. Formun action kısmındaki query parametresinin adını _csrfToken'den _csrf'ye çevirir misin?

Formun içindeki name="_csrf" kısmı zaten doğru, ona dokunma.
 
Anlıyorum hocam ancak attığınız kodda çok ama çok önemli bir detay var, csurf middleware'i token'ı query parametresi olarak beklerken default olarak _csrf ismini arar. Sen _csrfToken olarak göndermişsin. Yani csurf yüksek ihtimalle req.query._csrf diye bir şeyi arıyor ve bulamayınca da "invalid token" diyor. Formun action kısmındaki query parametresinin adını _csrfToken'den _csrf'ye çevirir misin?

Formun içindeki name="_csrf" kısmı zaten doğru, ona dokunma.
Knk... Allah senden razı olsun. Mutluluktan ağlayacağım şu an. Neredeyse 2 gündür bununla uğraşıyordum, kafaya yememe ramak kalmıştı. Böyle bir salaklık nasıl yaptım, mutlu olduğum kadar şaşkınımda. Çok teşekkür ederim dostum yardımın için. Bu arada nasıl çözüldü diye işaretleyebiliyorum?
 
Knk... Allah senden razı olsun. Mutluluktan ağlayacağım şu an. Neredeyse 2 gündür bununla uğraşıyordum, kafaya yememe ramak kalmıştı. Böyle bir salaklık nasıl yaptım, mutlu olduğum kadar şaşkınımda. Çok teşekkür ederim dostum yardımın için. Bu arada nasıl çözüldü diye işaretleyebiliyorum?
Gözün aydın hocam. Daha önce konu açmadığım için nasıl çözüldü diye işaretlendiğini bilmiyorum 😅
 

Technopat Haberler

Yeni konular

Yeni mesajlar

Geri
Yukarı