QR Kod Güvenliği: Dinamik QR Riskleri ve Kısaltılmış URL Tuzakları
Özet (TL;DR)
Birkaç hafta önce bir kafenin masa menüsündeki QR’ı taradım ve beklemediğim bir ql.st kısaltıcısında çözümlendi. Daha yakından baktığımda, orijinal QR’ın üzerine temiz bir çıkartmanın yerleştirildiğini gördüm. İşletmeci, haftalardır orada olduğunu ve kimsenin fark etmediğini söyledi. QR formatının kendisini “hacklemek” üzerine neredeyse hiç yayın yoktur ve bunun iyi bir nedeni var — gerçek saldırılar tam da bu kadar sıkıcı. Biri yeni bir çıkartma basıyor, müşteriniz onu izliyor. Bu yazının geri kalanı bu gerçeği saygıyla ele almaya çalışıyor: QR güvenliğinin çoğu kâğıt, bant ve iki yıl önce seçtiğiniz URL’den ibaret.
QR kodu bir güvenlik ilkeli değildir. Bir dizenin — genellikle bir URL’in — görsel kodlamasıdır ve güvenliği neredeyse tamamen hedef URL’in ve kodun üretilme biçiminin bir fonksiyonudur. Statik QR kodlar nihai URL’i doğrudan taşır ve basımdan sonra değiştirilemez. Dinamik QR kodlar, istenildiğinde yeniden yönlendirilebilen kısa bir yönlendirici URL taşır; bu kullanışlı olsa da uzun vadede risk yaratır: yönlendirici hizmeti kapanır, el değiştirir ya da ele geçirilirse, taranan her kod yeni hedefi izler. URL kısaltıcıları da aynı sorun sınıfına sahiptir (son kullanma, gasp, izleme); bu da onları yıllarca çalışması gereken kamuya açık basılı materyaller için zayıf bir seçim yapar. İyi bir varsayılan şudur: kendi alan adınızda bir kanonik URL’i doğrudan statik bir QR’a kodlayın; yönlendiricinin yaşam süresinin sonunu açıkça planladığınız kısa süreli pazarlama kampanyaları için dinamik QR veya kısaltılmış bağlantıları saklayın.
Arka plan ve kavramlar
QR kodları ISO/IEC 18004 ile tanımlanır. Sürümler 1’den 40’a kadar uzanır; daha yüksek sürümlerde daha fazla modül (ızgara hücresi) bulunur ve daha fazla veri taşıyabilirler. Her QR kodu ayrıca dört seviyeden birinde Reed-Solomon hata düzeltme verisini saklar:
- L: yaklaşık %7’ye kadar kurtarılabilir
- M: yaklaşık %15’e kadar kurtarılabilir
- Q: yaklaşık %25’e kadar kurtarılabilir
- H: yaklaşık %30’a kadar kurtarılabilir
Daha yüksek düzeltme seviyeleri; kir, kat veya logo bindirmesinin kodun bir kısmını bozmasına izin verir ama modül yoğunluğunu artırır ve bu da çok küçük basılan kodların taranmasını zorlaştırır. Kartvizitler ve posterler tipik olarak varsayılan olarak M alır; merkeze logo gerekirse Q veya H seçilir.
Statik QR kodlar nihai URL’i doğrudan modüllere gömer, dolayısıyla taranan sonuç kalıcıdır. Dinamik QR kodlar kısa bir yönlendirici URL’i gömer ve hedefi yeniden yönlendirebilen bir sağlayıcıya dayanır. Bu esneklik dinamik kodların hem özelliği hem de uzun vadeli riskidir.
Bir de kapasite açısı var. Sürüm 1 QR kodu (21×21 modül) M düzeltmede yaklaşık 25 alfanümerik karakter taşıyabilir; Sürüm 10 kodu (57×57 modül) 300’den fazla karakter taşıyabilir. Uzun URL’ler sizi daha yüksek sürümlere iter; bu sürümler daha yoğundur ve küçük boyutlarda taranması zordur. Dinamik bir QR’ın kısa yönlendiricisi kâğıtta gerçekten daha küçüktür ama bu kompaktlığın bedeli uzun vadeli bağımlılıktır. Gerçekten önemsediğiniz hedef kendi alan adınızda kısaltılabiliyorsa (örneğin example.com/p/123), yönlendirmeyi dışarıya vermeden boyut avantajının çoğunu elde edersiniz.
Bununla ilgili bir kavram da sessiz bölge (quiet zone). QR tarayıcılar, kodun etrafında boş bir kenarlığa — tipik olarak dört modül genişliğinde — güvenir. Yerleşiminiz sessiz bölgeyi yerden tasarruf için sıkıştırırsa, kodun kendisi sağlam olsa bile tarama güvenilmez hale gelir. Basılı tasarımcılar “QR taranmıyor” dediğinde ilk bakılacak yer sessiz bölgedir.
Karşılaştırma ve veriler
| Kriter | Statik QR | Dinamik QR |
|---|---|---|
| Kodlanan URL | Nihai hedef URL | Kısa bir yönlendirici URL |
| Tarama izleme / analiz | Varsayılan olarak yok | Standart özellik |
| Son kullanma riski | Alan adınız ayakta kaldıkça yok | Sağlayıcının planına, sözleşmesine ve yaşam döngüsüne bağlı |
| Üçüncü taraf bağımlılığı | Yok | Yönlendirici hizmeti |
| Oltalama yüzeyi | Yalnızca hedef URL’i denetlemek yeter | Yönlendirici gasbı veya devri hedefi sessizce değiştirebilir |
| Basımdan sonra düzenlenebilirlik | Mümkün değil, yeniden basılmalı | Mümkün |
Kısa bir URL baskıda daha temiz görünebilir, ama kullanıcılar görsel olarak nereye gittiğini doğrulayamaz. Saldırganlar da tam bu özellikten yararlanır — bir miktar estetik için büyük bir risk kategorisini takas ediyorsunuz.
Gerçek senaryolar
Senaryo 1 — Kartvizitler ve posterler. Son zamanlarda 2019’dan bir kartvizit çıkardım ve merakla QR’ı taradım. bit.ly hedefi 404 döndürdü — muhtemelen şirket yeniden yapılandırıldığında sahibinin kısaltıcı planı sona ermişti. Statik bir QR’a kendi alan adınızdaki bir kanonik URL’i kodlayın. Baskılı materyaller genellikle yıllarca dolaşır ve yönlendirici bağımlılıkları hype döngülerinden veya şirket yeniden yapılanmalarından nadiren sağ çıkar. Küçük basılan kodlar için düzeltme seviyesini düşürün ve URL uzunluğunu en aza indirin; modül sayısını düşük, tarama güvenilirliğini yüksek tutun.
Senaryo 2 — Bir pazarlama kampanyasını ölçmek. Tanıdığım bir startup, bir ticaret fuarında popüler bir dinamik QR hizmetini kullandı; üç ay sonra ücretsiz katman, dayandıkları özelliği sessizce emekliye ayırdı ve her fiziksel broşür “plan süresi doldu” sayfasına yönlendirmeye başladı. İzleme asıl amaçsa, saygın bir sağlayıcıyla dinamik QR veya UTM parametreli bir URL’e işaret eden statik QR düşünün. Artık varsayılan olarak yourdomain.com/go/summer-2026 gibi kendi barındırdığım bir kısaltıcı yolu kullanıyorum: alan adı sizdeyken son kullanma saati işlemez. Üçüncü taraf dinamik QR’ı yine de seçiyorsanız kapanış planını belgeleyin: kampanya bittiğinde yönlendirme nereye gidecek ve bu kararın sahibi kim.
Senaryo 3 — Belge bütünlüğü ve doğrulama. Yalnızca URL yerine bir belge karması (hash) veya imzalı URL parametresi (örn. ?d=abc123&sig=...) kodlayın; böylece tarayıcı, belgenin orijinalle eşleştiğini doğrulayabilir. Üzerinde çalıştığım bir sertifika verme projesinde, bir SHA-256 karmasının ilk 16 hex karakterini artı bir HMAC imzasını QR’a paketledik; bu bizi Sürüm 10+ kodlara itti ve baskı boyutunu tarama güvenilirliğine karşı yeniden dengelemek zorunda kaldık. Bu sözleşmeler, sertifikalar ve müdahale tespitin önemli olduğu ürün etiketleri için yararlıdır.
Senaryo 4 — Restoran menüleri ve kamuya açık kioskler. 2020 sonrası menü QR kodlarının patlaması, kamuya açık yerleri çıkartma tabanlı oltalama için zengin bir hedef haline getirdi: saldırgan benzer bir QR basar, gerçeğin üzerine yerleştirir ve şüphelenmeyen müşteri kimlik avlayan bir sayfaya yönlendirilir. Savunma önlemleri sıkıcı ama etkilidir: kodu sabit bir yüzeye lamine edin, günlük inceleyin ve restoranınızın kendi alan adında bir kanonik URL kullanın; böylece önizlemeyi kontrol eden müşteriler onu tanıyabilir.
Yaygın yanlış anlamalar
“QR kodları hacklenebilir.” Formatın kendisi tipik olarak zayıf halka değildir. Gerçek riskler QR’ın içinde kodlanmış zararlı URL’ler ve fiziksel kurcalamadır — biri kamuya açık bir yerde sizinkinin üzerine yeni bir QR çıkartması yapıştırır. Asılı kodları eklenmiş çıkartmalara karşı görsel olarak incelemek temel bir fiziksel güvenlik alışkanlığıdır.
“Kısa URL’ler daha temiz, o yüzden daha iyi.” Görsel olarak daha temizler ama kullanıcılar onları doğrulayamaz, altındaki hizmet kapanabilir veya ele geçirilebilir ve QR’ın kendisi üçüncü taraf bir şeye uzun ömürlü bir bağımlılık haline gelir. Uzun ömürlü baskı materyalleri için kanonik uzun bir URL daha güvenlidir.
“Daha yüksek hata düzeltme her zaman daha iyidir.” H seviyesi düzeltme, merkezi bir logoyla kaplamak istediğinizde kullanışlıdır ama modül yoğunluğunu artırır ve küçük basım boyutlarında tarama güvenilirliğini düşürür. M tipik bir güvenli varsayılandır.
“QR’ın nereye gittiğini her zaman anlayabilirsin.” iOS 17 ve 18’in yerleşik kamera uygulaması açmadan önce bir URL afişi gösterir, ama bazı Android OEM kamera uygulamaları ve üçüncü taraf tarayıcılar tek dokunuşta doğrudan tarayıcıya atlar. Kamuya açık Wi-Fi oturum açma oltalama QR’ları özellikle bu otomatik açılma davranışını hedef alır. Mümkünse otomatik açılmayı devre dışı bırakın ve dokunmadan önce alan adını doğrulamayı alışkanlık edinin.
“Kendim ürettiğim bir QR kodu otomatik olarak güvenlidir.” Her girdiyi kaydeden üçüncü taraf bir web hizmetinden ürettiyseniz değil. Bazı ücretsiz QR üreticileri gönderilen URL’leri kaydedip analitikleri yeniden satar veya URL’inizi sessizce kendi yönlendiricilerine sararak taramaları izleyebilir. Gizlilik bildirimini okuyun veya kodu tamamen tarayıcınızda çalışan bir araçla üretin.
“Kodlama şifrelemedir.” QR bir kodlamadır, bir şifreleme şeması değildir. Bir tarayıcısı olan herkes kodlanmış veriyi okuyabilir; bu genel olarak barkodlar için de geçerlidir. Gizlilik gerekiyorsa yükü kodlamadan önce şifreleyin — örneğin okunabilir bir parametre yerine imzalı bir JWT kodlayın.
Kontrol listesi
- Bu QR ne kadar süre çalışmalı?
- Yıllarca: statik QR + kendi alan adı URL’inizi tercih edin.
- Kısa kampanya: dinamik QR veya UTM parametreleri makul.
- Gerçekten izleme gerekli mi?
- Hayır: statik QR yeterli.
- Evet: saygın bir dinamik QR sağlayıcı seçin ve yaşam sonu yönlendirmesini planlayın.
- Baskı boyutu ne?
- Çok küçük: daha kısa URL ve M seviyesi düzeltme.
- Normal veya büyük: logo bindirmesi istiyorsanız Q veya H’yi karşılayabilirsiniz.
- Kod kamuya açık bir yere mi yerleştirildi? Kurcalama veya çıkartma bindirmelerine karşı periyodik inceleyin.
- Hedef URL güvenli mi? HTTPS, alan adı sahipliği ve mevcut geçerliliği onaylayın.
- QR nerede üretiliyor? Kodlanan URL’in üçüncü taraf bir sitede günlük girdisi olarak çıkmaması için çevrim dışı veya tarayıcı içi üretimi tercih edin.
- QR başarısız olursa ne olur? Yedek tasarlayın: kodun yanında basılmış kısa bir URL veya insan okunabilir bir ipucu; bir tarayıcı yanlış okuduğunda veya hedef geçici olarak kapalı olduğunda materyal hâlâ kullanışlı kalır.
İlgili araç
Patrache Studio QR kod üreticisi kodları tarayıcıda üretir, böylece girdiğiniz URL dış bir sunucuya gönderilmez. Sonuçta oluşan QR, web için bir görsele gömülüyorsa, onu Görsel Sıkıştırma Rehberi format yönlendirmesiyle eşleştirin. QR dağıtmayı düşündüğünüz bir belge paketinin üzerinde kullanılacaksa Tarayıcıda PDF Birleştirme ve Bölme akışı, varlıktan nihai PDF’e kadar tüm boru hattını tutarlı bir gizlilik sınırının içinde tutar.
Kaynaklar
- ISO/IEC 18004:2015, “QR Code bar code symbology specification” — resmi başlık; standart ücretsiz dağıtılmaz.
- UK NCSC, “QR codes — what’s the real risk?” — https://www.ncsc.gov.uk/guidance/qr-codes
- Anti-Phishing Working Group, oltalama örnekleri — https://www.phishing.org/phishing-examples
- MDN, URL yapısı ve doğrulama — https://developer.mozilla.org/en-US/docs/Web/API/URL