Güvenlik

Güvenlik modelimiz tek cümlede: saldırılacak bir sunucuda hiçbir şey yok. Aşağıdakilerin tamamı DevTools'unuzdan doğrulanabilir.

Mimari

Üretici, Cloudflare Pages üzerinden sunulan statik tek sayfalı bir uygulamadır: kullanıcı hesabı yok, kimlik doğrulama yok ve oluşturma akışının hiçbir yerinde arka uç kod yolu yok. Her QR oluşturma, kodlama, tarama ve işleme işlemi tamamen tarayıcınızda çalışır. Yanında bir küçük sunucusuz uç nokta bulunur ve bu, gizlenmek yerine burada listelenir: /api/contact (gönderdiğiniz veriyi Cloudflare D1'de saklayan ve bize e-postayla ileten iletişim formu). Bir QR kodu oluştururken çağrılmaz; URL güvenlik kontrolü check.qr.abundera.ai adresinde ayrı bir üründür. QR kodunun güvenli olup olmadığını kontrol et

Tehdit modeli

Üretici herhangi bir kullanıcı verisi toplamadığı, saklamadığı veya iletmediği için (yukarıdaki iki uç nokta yalnızca açıkça kendilerine gönderdiğinizi işler), en yaygın web uygulaması tehditleri, kimlik bilgisi hırsızlığı, veritabanı ihlali, oturum ele geçirme, sunucu taraflı enjeksiyon, ona uygulanmaz. Kalan saldırı yüzeyi, kaynağımızdan sunulan statik varlık paketidir (HTML, CSS, JavaScript). Şu varsayımlarla tasarım yapıyoruz:

İçerik Güvenlik Politikası, direktife göre

Aşağıdaki politika, bu sayfa derlendiğinde dağıtılan _headers dosyasından okunur, bu yüzden kenarın gönderdiğinden sapamaz. Herhangi bir isteğin yanıt başlıklarında doğrulayın.

Content-Security-Policy:
  default-src 'self';
  script-src 'self' https://abundera.ai 'wasm-unsafe-eval' https://challenges.cloudflare.com;
  worker-src 'self' blob:;
  style-src 'self' 'unsafe-inline' https://abundera.ai;
  font-src 'self';
  img-src 'self' data: blob: https:;
  connect-src 'self' https: https://challenges.cloudflare.com;
  frame-src 'self' https://challenges.cloudflare.com;
  frame-ancestors 'none';
  base-uri 'self';
  form-action 'self'

Her direktifin ne yapmasına izin verdiği ve nerede taviz verdiği:

CSP'nin yapamadıkları

CSP, tarayıcının kodu nereden yükleyeceğini sınırlar. Yüklenen kodun ne yaptığını denetlemez. Kaynağımız ele geçirilseydi (tehdit modelindeki ilk madde), saldırganın komut dosyası yukarıdaki connect-src ve img-src izinleri dahil bizimkiyle aynı izinlerle çalışırdı. Buna karşı savunmalarımız CSP'nin öncesinde yer alır: dağıtımlar kapsamlı token'lara sahip tek bir Cloudflare hesabı üzerinden yapılır, varlık dosya adları içerik özetlenir böylece değiştirilmiş bir dosya kendisine referans veren her URL'yi değiştirir ve service worker yalnızca aynı kaynaklı GET yanıtlarını önbelleğe alır. Manifesto, siteyi gönderildiği haliyle tanımlar. Bu, hiçbir web sayfasının asla bir yere veri gönderemeyeceği iddiası değildir ve bizi bu daha dar, denetlenebilir ifadeyle sorumlu tutmanızı tercih ederiz.

/bio/* (kullanıcı tarafından sağlanan avatarlar için gevşetilmiş img-src) ve /embed/* (kasıtlı yerleştirme için gevşetilmiş frame-ancestors) için farklı CSP politikaları geçerlidir. Her ikisi de site/_headers içinde belgelenmiştir.

Taşıma ve çerçeveleme başlıkları

Service worker

Service worker'ımız (site/sw.js) yalnızca aynı kaynaklı varlıkları önbelleğe alır. Fetch işleyicisi, kaynaklar arası istekleri ve GET dışı yöntemleri açıkça reddeder, mantığı /sw.js'de okuyabilirsiniz (kaynak, takip edilebilecek kadar küçültülmeden gönderilir). Önbellek yazmaları event.waitUntil() içine sarılır, böylece navigasyon ortasında bırakılamazlar.

Girdi sanitizasyonu

Kullanıcı girdisini kabul eden her işleme yolu, bunu güvenilmez metin olarak ele alır:

Kaynaklar arası görüntü getirme

Bir kullanıcı vCard fotoğrafı veya logo olarak bir https: URL'si yapıştırdığında, tarayıcı bunu CORS ve CSP'mizin img-src izin listesine tabi olarak getirir. Görüntü bir canvas'a işlenir. Asla canlı DOM olmaz, asla kod olarak çalışmaz ve asla kaynağımıza ulaşmaz, getirme işlemi tarayıcı → uzak görüntü şeklindedir ve sonuç istemci tarafında çizilir. Uzak bir görüntü URL'sini kontrol eden bir saldırgan, URL'nin yüklendiğini izleyebilir (kendi sunucusundaki bir log satırı) ancak sayfamızdan hiçbir şeyi sızdıramaz.

Alt Kaynak Bütünlüğü (SRI)

Gönderdiğimiz tüm JavaScript ve CSS aynı kaynaktandır. Üçüncü taraf komut dosyaları veya stil sayfaları yüklemiyoruz, bu nedenle SRI hash'leri geçerli değildir. Üçüncü taraf bir varlık yükleyecek olursak, üzerine bir SRI integrity özelliği ekleyeceğiz ve hash güncelleme sürecini bu sayfada belgeleyeceğiz.

Güvenlik açığı bildirme

Abundera QR'ı etkileyen bir güvenlik sorunu keşfederseniz, kodumuzdaki, dağıtımımızdaki veya gönderdiğimiz bir bağımlılıktaki, lütfen bunu özel olarak security@abundera.ai adresine bildirin. 72 saat içinde önceliklendirmeyi hedefliyoruz. /.well-known/security.txt dosyamızdaki iletişim bilgileri aracılığıyla da bize ulaşabilirsiniz.

Henüz ödüllü hata programı yok

Şu an için ücretli ödüller sunmuyoruz, ancak onaylanan her geçerli rapor, değişiklik günlüğünde kredi ve kamuya açık teşekkürümüzü alır.

Yukarıdakileri doğrulayın

Bu sayfadaki her iddia, bize güvenmek zorunda kalmadan tarayıcınızın DevTools'undan doğrulanabilir:

İletişim

Güvenlik açıklamaları: security@abundera.ai

Son güncelleme: 2026-09-03. Sonraki inceleme: 2026-12-03.