CSRF belirteci uyuşmazlığı, bir HTTP isteğiyle birlikte gönderilen sahteciliğe karşı koruma belirteci, sunucunun kullanıcının oturumu için beklediği belirteçle eşleşmediğinde ortaya çıkar. Uygulamada, bu uyumsuzluk ya isteğin yasal olarak kullanıcıdan gelmediğini gösterir (böylece olası bir siteler arası istek sahtecilik saldırısı) veya hem kullanılabilirliği hem de güvenliği tehlikeye atan ciddi bir uygulama veya yapılandırma hatasına işaret eder.
Modern güvenlik mühendisi için, anlamak CSRF belirteci uyuşmazlığı sadece önemsiz form sonrası hatalarını önlemekle ilgili değildir. Bu, oturum yanlış yapılandırmasının, önbelleğe alma anormalliklerinin, proxy katmanı parazitinin, SPA/API belirteç boşlukları, hatta devam etmekte olan aktif bir saldırı.
Kimliği doğrulanmış oturumlar, API'ler veya SPA'lar ile web uygulamaları oluşturuyor veya güvenliğini sağlıyorsanız ya da otomatik güvenlik açığı taramaları / CI işlem hatları çalıştırıyorsanız CSRF belirteci uyuşmazlığı bir kategori olarak hem tespit hem de düzeltme duruşunuzu keskinleştirecektir.

CSRF Token Uyuşmazlığı Güvenlik Mühendisleri İçin Neden Önemlidir?
Siteler Arası İstek Sahteciliği (CSRF) en gizli web saldırı vektörlerinden biri olmaya devam etmektedir: bir kullanıcı bir web uygulamasına giriş yapar ve bir saldırgan tarayıcıyı, kullanıcının oturum bağlamından geldiği için sitenin güvendiği bir istek göndermesi için kandırır. En iyi tasarlanmış sistemlerde bu güven, sunucu tarafından oluşturulan, oturuma bağlı bir CSRF belirtecinin doğrulanmasıyla kırılır; bu belirteç eşleşmediğinde "belirteç uyuşmazlığı" hatası alırsınız.
Ama bir uygulayıcının gözünden:
- Bir token uyuşmazlığı iyi huylu bir hata olarak görünebilir (kullanıcı şikayetleri: "formu neden gönderemiyorum?"), ancak daha derin sorunları ortaya çıkarabilir: bozuk oturum işleme, yanlış çerez / SameSite bayrakları, uygunsuz önbelleğe alma ve hatta fark edilmeyen kötü niyetli istekler.
- Sızma testi / otomasyonunda bu hatalar eyleme geçirilebilir sinyallerdir - örneğin, durum değiştiren bir uç noktanın korunduğunu, ancak belki de yalnızca kısmen korunduğunu veya korumanın yanlış yapılandırıldığını veya atlanabilir olduğunu ortaya çıkaran 403/419 yanıtları olarak görünebilirler.
- DevOps perspektifinden bakıldığında, günlüklerdeki sık uyuşmazlıklar, kullanıcı güvenini azaltan veya yeni saldırı vektörlerine kapı açan gerilemelere (örneğin, ters proxy değiştirildi, CDN eski sayfaları önbelleğe aldı, oturum sürücüsü değiştirildi) işaret edebilir.
- Yapay zeka odaklı bir otomasyon hattında, uyumsuzluk hatalarının yakalanması ve sınıflandırılması, normal ve anormal akışların modellerinin oluşturulmasına yardımcı olarak sapma veya potansiyel istismar konusunda proaktif uyarı sağlar.
Böylece, CSRF belirteci uyuşmazlığı bir hatadan daha fazlasıdır - hem savunmalar hem de hücumlar için bir görünürlük kaldıracıdır.

CSRF Koruması İş Akışı
Uyumsuzlukları etkili bir şekilde teşhis etmek için CSRF'nin uçtan uca nasıl uygulandığını haritalamanız gerekir.
Token yaşam döngüsü
- Bir kullanıcı bir sayfa yüklediğinde veya bir oturum başlattığında, sunucu kriptografik olarak rastgele / öngörülemeyen bir CSRF belirteci oluşturur.
- Sunucu belirteci depolar (oturum deposu, çerez deposu veya durumsuz mimarilerde örtük olarak).
- Belirteç, istemci yüküne gömülür: formlarda gizli , özel başlık (örn,
X-CSRF-TOKEN) veya çift gönderme çerezi aracılığıyla. - Durum değiştiren bir istek (POST, PUT, DELETE) geldiğinde, sunucu doğrulama yapar:
- belirtecin istekte mevcut olduğunu, VE
- saklanan oturumla veya beklenen değerle eşleşir.
- Doğrulama başarısız olursa → "CSRF token mismatch" → istek reddedilir (403/419) veya işaretlenir.
Modern SPA'larda/API'lerde:
- Kurabiye ile
AynıSite=Strict/Lax,Güvenli,HttpOnlybayrakları kimlik bilgisi hırsızlığını önlemeye yardımcı olur. - Çift gönderim çerez modeli: çerezde saklanan belirteç ve başlık/gövde olarak gönderilir, sunucu her ikisini de karşılaştırır.
- Durumsuz JWT/CSRF belirteç modelleri, oturum deposu yerine HMAC imzalarını yerleştirir. wiz.io+1
Belirtecin tam olarak nerede oluşturulduğunu, depolandığını ve kontrol edildiğini anlamak, uyumsuzluk hatalarını bulmada kritik öneme sahiptir.
CSRF Token Uyuşmazlığı Hatalarının Temel Nedenleri
Aşağıda en sık rastlanan ölüm nedenlerini listeleyen bir tablo yer almaktadır CSRF belirteci uyuşmazlığı ve bunların nasıl önceliklendirileceği:
| Kök Neden | Teşhis Sinyali | Hızlı Düzeltme |
|---|---|---|
| Oturum sona erme / yeniden oluşturulmuş belirteç | Kullanıcı hareketsizlikten sonra uyumsuzluk görüyor | Oturum TTL'sini artırın veya oturum açarken belirteci yenileyin |
| Önbelleğe alınan form/html eski belirteç içeriyor | Belirteç değeri canlı oturumla eşleşmiyor | Formlar için önbelleğe almayı devre dışı bırakın; ekleyin Cache-Control başlıklar |
| AJAX/SPA eksik belirteç başlığı | Fetch/Axios istekleri başlık olmadan başarılı olur; yalnızca başlık atlandığında uyumsuzluk olur | Her isteğin token başlığı içerdiğinden emin olun (örn, X-CSRF-TOKEN) |
| Çerez etki alanı/alt etki alanı yanlış yapılandırması | Belirteç çerezi gönderilmedi veya alt alan adında oturum uyuşmazlığı | Çerez etki alanını hizalayın, aynı kaynak veya SAN alt etki alanını sağlayın |
| SameSite / Secure / HttpOnly yanlış yapılandırması | CSRF çerezi siteler arası bağlamda gönderilmeyerek uyuşmazlığa neden oluyor | Kullanım AynıSite=Lax veya Katı, Güvenli HTTPS ise; siteler arası akışları belgeleyin |
| Ters proxy, yük dengeleyici, CDN müdahalesi | Yalnızca proxy katmanının arkasında belirteç uyuşmazlığı | Proxy'lerin üstbilgileri ilettiğinden emin olun, belirteçleri silen önbelleği devre dışı bırakın |
| Beklenmedik zamanda jeton yenilenmesi | Aynı oturumda birden fazla belirteç oluşturuldu, tarayıcı eskisini kullanıyor | CSRF belirtecini her form için yeniden oluşturmayın; gerekmedikçe oturum başına yalnızca bir kez |
| Tarayıcı uzantısı / çerezleri / komut dosyalarını engelleme | Belirteç çerezi oluşturulmadı/okunmadı | Kullanıcıdan siteyi beyaz listeye almasını veya engelleyici uzantıları (ör. reklam engelleyiciler) devre dışı bırakmasını isteyin |
Bu tablo, SIEM veya pentest çıktınızda uyumsuzluk günlükleri gördüğünüzde tanısal bir kopya sayfası olarak hizmet etmelidir.

Çerçeve ve Platform Derin Dalışı
Şimdi popüler çerçevelerin CSRF'yi nasıl ve nerede uyguladığına bakalım CSRF belirteci uyuşmazlığı sık sık yüzeye çıkar.
Laravel (PHP)
Laravel bir TokenMismatchException belirteç doğrulamada başarısız olduğunda. Parlak Güvenlik+1 Tipik sorunlar: SESSION_DRIVER yanlış yapılandırma, güncel olmayan belirteçleri yerleştiren önbelleğe alınmış görünümler, eksik <meta name="csrf-token"> Etiket.
Snippet (AJAX kurulumu):
// Blade şablon başlığında
Django (Python)
Django'nun kullandığı CsrfViewMiddleware ve {% csrf_token %} şablon etiketi. Yaygın tuzaklar: yanlış dekore edilmiş görünümler, AJAX'ın gönderilmemesi X-CSRFTOKEN Başlık, CSRF_TRUSTED_ORIGINS Yanlış ayar.
Snippet:
{% csrf_token %}
Node/Express (JavaScript)
Kullanma csurf ile ara yazılım çerez ayrıştırıcı. Çerez iletilmediğinde veya CSRF belirteci başlığı eksik olduğunda genellikle belirteç uyuşmazlığı.
Snippet:
const express = require('express');
const csurf = require('csurf');
const cookieParser = require('cookie-parser');
const app = express();
app.use(cookieParser());
app.use(csurf({ cookie: true }));
app.get('/form', (req, res) => {
res.render('sendForm', { csrfToken: req.csrfToken() });
});
app.post('/process', (req, res) => {
// csurf belirteci otomatik olarak doğrular
res.send('Başarılı');
});
SPA'lar / API Arka Uçları
Tek sayfalı uygulamalarda veya API öncelikli mimarilerde, yaygın hata: ilk token uç noktasını talep etmemek (örn, /csrf-cookie) veya önceki oturumdaki belirteci kullanarak.
"Sonunda çalışmasını sağladım... önce sanctum varsayılan csrf uç noktasına bir GET isteği yapmanız gerekiyor... ardından çerez değeri ile X-XSRF-TOKEN başlığını manuel olarak eklemeniz gerekiyor." Reddit
Bu farkındalıkla, otomasyonunuzu token yaşam döngüsünü doğru şekilde doğrulayacak şekilde uyarlayabilirsiniz.
Sızma Testi ve Avcılık CSRF Belirteci Uyuşmazlığı
Bir pentester veya güvenlik mühendisi için, CSRF belirteci uyuşmazlığı sadece bir savunma mekanizması değildir: bir istihbarat sinyalidir. İşte bunu nasıl bir keşif/saldırı vektörüne dönüştüreceğiniz.
- Tarama uç noktaları durum değiştirme işlemlerini (POST, PUT, DELETE) gerçekleştirir. Yanıtları not edin: 403/419 genellikle CSRF korumasının tetiklendiğini gösterir.
- Otomatik fuzzingtoken olmadan, geçersiz token ile, önceki oturumdan token ile istek gönderin. Korumasız uç noktaları eşlemek için yanıt davranışlarını (200 vs 403) karşılaştırın.
- Oturum kaçırma zincirleme: Belirteç uyuşmazlığının yalnızca çerez etki alanı farklı olduğunda veya belirteç geri dönüştürüldüğünde meydana geldiğini varsayalım: CSRF'yi atlamak için oturum sabitleme, proxy başlığı geçersiz kılma veya ters proxy yanlış yönlendirmesinden yararlanabilirsiniz.
- Proxy önbellek zehirleme vektörü: Önbelleğe alınan HTML eski belirteç içeriyorsa ve yük dengeli kullanıcılar bunu yeniden kullanıyorsa, başka bir kullanıcı oturumu için geçerli bir belirteci yeniden üretebilirsiniz.
- UI akışlarından yararlanın: Belirteçsiz bir isteği zorlamak için hazırlanmış bir bağlantı veya iframe kullanın; uyuşmazlığı tetiklerse, belirteç kontrolünün var olduğunu bilirsiniz - sonraki adım: eksik / yansıtılmış belirteç güvenlik açıklarını veya SameSite baypasını deneyin.
Örnek kod iskeleti (Python):
i̇thalat talepleri̇
session = requests.Session()
# Adım A: CSRF belirteci ile ilk sayfayı alın
resp = session.get("")
token = parse_token(resp.text)
# Adım B: durum değişikliğini belirteç olmadan gönder
bad = session.post("", json={'name':'Evil'})
print("Yanıt kodu (belirteç yok):", bad.status_code) # 419/403 bekliyor
# Adım C: belirteç ile gönder
iyi = session.post("",
headers={'X-CSRF-TOKEN': token},
json={'name':'Evil'})
print("Yanıt kodu (belirteçle birlikte):", good.status_code) # 200 bekleniyor
Başarı ve uyumsuzluk arasında geçiş yapan yanıtları gösteren günlükler, yanlış yapılandırma için yüksek sinyaldir.
Penligent.ai ile Otomatik Tespit ve İyileştirme
Modern güvenlik ekipleri regresyon, güvenlik açıkları ve sapmaları tespit etmek için otomasyon ve yapay zekayı entegre ediyor - işte bu noktada Penligent.ai resme giriyor.
Platform entegrasyonu
Penligent.ai'in akıllı pentest platformu, aşağıdakiler de dahil olmak üzere CSRF ile ilgili kusurların tespitini otomatikleştirir CSRF belirteci uyuşmazlığı. Kimlik doğrulama akışlarını tarar, belirteç yaşam döngülerini izler, hatalı biçimlendirilmiş veya eksik belirteç varyantlarını enjekte eder ve eyleme geçirilebilir bulgular oluşturmak için sonuçları ilişkilendirir. Penligent, makine öğrenimi anomali tespitini kural tabanlı doğrulama ile birleştirerek, token uyumsuzluklarının meydana geldiği uç noktaları ortaya çıkarır ÜRETİMDE veya yalnızca CI ortamlarında. Güvenlik mühendisleri daha sonra düzeltmeye değer akışlara öncelik vermek için "sık token uyuşmazlığına" göre filtreleme yapabilir.
İş akışı örneği
Penligent.ai'yi CI/CD işlem hattınıza entegre edin, böylece her derleme tüm durum değiştiren uç noktaların taranmasını tetikler. Bir uyumsuzluk meydana geldiğinde, Penligent bir bulgu üretir: uç nokta /api/v1/settings, yanıt kodu 419, token eksik başlığı, token ile aynı istek 200 döndürür. İstek/yanıt dökümü, curl-replay, düzeltme önerisi (örneğin, "X-CSRF-TOKEN başlık seti ve çerez etki alanının hizalandığından emin olun") ekler. Zamanla temel metrikler (uyumsuzluk sıklığı, açığa çıkan yeni uç noktalar) elde edersiniz ve gösterge tablosu metrikleri aracılığıyla sapmayı izleyebilirsiniz. Bu, reaktif hata ayıklamadan CSRF belirteci uyuşmazlığı proaktif önleme için hatalar.
En İyi Mühendislik Uygulamaları ve Güçlendirme Kontrol Listesi
İşte hem geliştirme hem de güvenlik ekiplerinin güvenlik açıklarını taraması için hazırlanmış bir kontrol listesi CSRF belirteci uyuşmazlığı.
- Token üretimi: oturum başına (veya değiştirilebilir form başına) bir tane, kriptografik olarak rastgele.
- Belirteç doğrulama: istek belirtecini oturum veya çift gönderim çerezi ile karşılaştırın.
- Çerez politikası: Ayarla
Güvenli,HttpOnly,SameSite=Strict(veyaLaxgerekli olduğunda). - Form / SPA entegrasyonu: Durum değiştiren her isteğin token (gizli alan veya başlık) içerdiğinden emin olun.
- Önbellek kontrolü: HTML formlarını veya belirteçleri gömen sayfaları önbelleğe almayın.
- Proxy/Yük Dengeleyici: Başlık yönlendirmeyi sürdürün, çerezleri sıyırmaktan kaçının, alt alan adı yönlendirmesini hizalayın.
- CI/Otomatik test: Belirteç yokluğu, bayat belirteç ve çift gönderme testlerini derleme işlem hattına dahil edin.
- İzleme: "CSRF belirteci uyuşmazlığı" etiketli 403/419 günlüklerini yakalayın; uç noktaya ve sıklığa göre toplayın.
- Regresyon uyarıları: Dağıtımdan sonra uyumsuzluk oranı artarsa, araştırmayı tetikleyin (yapılandırma sapması olabilir).
- Dokümantasyon ve eğitim: Geliştiricilerin ve ön uç mühendislerinin belirteçlerin SPA'larda nasıl alınması/geçirilmesi gerektiğini bildiğinden emin olun.
Snippet (Nginx proxy başlık yönlendirme):
konum / {
proxy_pass ;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# Çerez başlığının iletildiğinden emin olun
proxy_set_header Cookie $http_cookie;
proxy_pass_request_headers açık;
}
Kod Örneği Koleksiyonu
İşte kaçınmak ve tespit etmek için teknolojiler arasında çalışan örnekler CSRF belirteci uyuşmazlığı.
Laravel AJAX örneği
<meta name="csrf-token" content="{{ csrf_token() }}">
<script>
axios.defaults.headers.common['X-CSRF-TOKEN'] = document.querySelector('meta[name="csrf-token"]').getAttribute('content');
axios.post('/update', { name: 'Bob' })
.then(r => console.log(r.data))
.catch(e => console.error('CSRF error', e.response.status));
</script>
Django fetch örneği
<body>
<script>
function getCookie(name) {
let v = document.cookie.match('(^|;)\\\\s*' + name + '\\\\s*=\\\\s*([^;]+)');
return v ? v.pop() : '';
}
fetch('/api/update-profile', {
method: 'POST',
headers: {
'X-CSRFToken': getCookie('csrftoken'),
'Content-Type': 'application/json'
},
body: JSON.stringify({ email: '[email protected]' })
}).then(res => {
if (res.status === 403) {
console.error('CSRF token mismatch or missing');
} else {
return res.json();
}
});
</script>
</body>
Node/Express snippet
app.use(cookieParser());
app.use(csurf({ cookie: true }));
app.get('/form', (req, res) => {
res.render('form', { csrfToken: req.csrfToken() });
});
app.post('/submit', (req, res) => {
res.send('Form başarıyla gönderildi');
});
Uyuşmazlık olayları için Python günlük ayrıştırıcısı
yeniden içe aktar
pattern = re.compile(r'CSRF token mismatch error on endpoint (\\S+)')
with open('app.log') as f:
for satır içinde f:
m = pattern.search(line)
eğer m:
print('Mismatch detected:', m.group(1))
Sıfır Güven ve Yapay Zeka Güdümlü Otomasyon Çağında CSRF
Mimariler geliştikçe - mikro hizmetler, ayrıştırılmış SPA'lar, yapay zeka odaklı tarama, sıfır güven tasarımı - CSRF koruması için paradigma da değişiyor.
- Sıfır güven ağları geleneksel oturum çerezi güvenini tamamen kaldırmayı önermektedir; CSRF belirteçleri hala doğrulanmalıdır, ancak genellikle daha ince taneli kimlik onayları veya OVF (Tek Seferlik Değer) modelleriyle birleştirilmelidir.
- SameSite çerezinin benimsenmesi tarayıcılar tarafından bazı CSRF vektörlerini azaltır, ancak yine de eski akışları, çapraz kaynaklı API çağrılarını ve üçüncü taraf kimlik doğrulama akışlarını (OAuth/OIDC) işlemeniz gerekir.
- Yapay zeka güdümlü güvenlik açığı tarayıcıları Yüzlerce uç noktada token uyumsuzluklarının sürekli olarak tespit edilmesini sağlayarak uyumsuzluk oranı artışları, token yeniden kullanım modelleri veya olağandışı uç nokta davranışı gibi anormallikleri işaretler.
- Otomatik düzeltme: uyumsuzluk sıklığına ilişkin ölçümler, sapmayı tespit eden ML modellerini besler - örneğin, "token oranının taban çizgisinin altına düşmesi", ön uç kod değişikliğinin token enjeksiyonunu kaldırdığını gösterebilir.
Sonuç
CSRF belirteci uyuşmazlığı genellikle sadece bir "form gönderme hatası" olarak göz ardı edilir, ancak güvenlik mühendisleri için stratejik bir göstergedir - oturum yanlış yapılandırmasını, proxy veya önbellekleme hatalarını, ön uç token işleme yanlış kablolamasını ve hatta canlı saldırıların işaretlerini ortaya çıkarır. Yaşam döngüsünü derinlemesine anlayarak, kontrolleri otomasyona entegre ederek ve sağlam mühendislik uygulamalarını benimseyerek, token uyumsuzluklarını hayal kırıklığı günlüklerinden eyleme geçirilebilir savunma telemetrisine dönüştürebilirsiniz.
