Files
bilalgursen 9e4c5608eb
All checks were successful
Deploy / deploy (push) Successful in 6m27s
feat(kvkk): çerez politikası, ölçümü kapatma ve ilk ziyaret bilgi bandı
- /cerez-politikasi: çerez aydınlatma metni (ad, amaç, süre, taraf),
  Rybbit ölçümünün kapsamı ve hukuki dayanağı (KVKK md. 5/2-f,
  Çerez Rehberi Temmuz 2025 §5.9)
- OlcumTercihi: Rybbit'i tarayıcıda kapatan düğme (disable-rybbit)
- CerezBilgi: ilk ziyarette bir kez görünen bilgilendirme (onay
  penceresi değil; rıza gerektiren çerez yok)
- gizlilik: analitik bölümü kodla eşitlendi (e-posta/ad gönderilmiyor)
- alt bilgi ve sitemap'e sayfa eklendi
- docs: hukuki analiz ve meşru menfaat denge testi

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-05 10:11:38 +03:00

8.4 KiB
Raw Permalink Blame History

Çerez ve analitik uyumu (5 Ekim 2026)

Soru: Rybbit ile ölçüm yapıyoruz, çerez izni istemiyoruz. Yasal mı, ne eksik?

Sonuç: Onay penceresi (kabul/ret) gerekmiyor. Ama aydınlatma eksikti ve Rybbit panelinde üç ayar politikanın söylediğiyle uyuşmalı. Kod tarafı yapıldı; panel tarafı Bilal'de (en altta).

Bu bir avukat görüşü değildir. Kaynak metinler okunarak hazırlandı; yayından önce bir KVKK avukatına 30 dakikalık okuma yaptırmak makul.

1. Hukuki çerçeve

Kaynak Bize etkisi
5809 sayılı Elektronik Haberleşme Kanunu md. 51/3 (cihaza bilgi yazma → açık rıza) Uygulanmaz. Yalnız BTK yetkili "işletmeciler" için. Rehber bunu açıkça söylüyor (§3): site operatörleri kapsam dışı. Türkiye'de AB'deki ePrivacy md. 5/3'ün genel karşılığı yok.
KVKK (6698) md. 4, 5, 10, 11, 12 Uygulanır. Çerez ya da ölçümle kişisel veri işleniyorsa hukuki sebep (md. 5) ve aydınlatma (md. 10) gerekir.
KVKK Çerez Uygulamaları Hakkında Rehber, Temmuz 2025 (Yayın No 69) Asıl referans. Bağlayıcı değil ama Kurul kararları bunu izliyor.
Kurul kararı 2020/173 ve 2022'deki 300 bin TL'lik çerez cezası İkisi de rızasız reklam/üçüncü taraf analitik çerezi + aydınlatma yokluğu. Bizim durumumuz değil.
GDPR / ePrivacy Site Türkçe, Türkiye'deki YKS adaylarına yönelik; AB'ye hizmet sunma ya da AB'dekileri izleme yok → GDPR md. 3/2 kapsamında değiliz. AB'ye açılırsak rybbit-user-id yazımı ePrivacy'de rıza ister; o gün yeniden bakılır.

Rehberin bizi ilgilendiren üç hükmü

  1. §5.9 — Birinci taraf analitik çerezler "Kriter B" (rıza gerekmeyen) sayılır. 2022 sürümünde analitik rıza istiyordu; Temmuz 2025 güncellemesi bunu değiştirdi. Şartları: yalnız kitle ölçümü, veri ölçülü olmalı ve IP maskelenmeli, yalnız anonim istatistik üretilmeli, siteler arası takip olmamalı, süre makul olmalı, veri üçüncü tarafa gitmemeli.
  2. §1.2 — local storage, parmak izi, piksel için rehber yönlendirme yapmıyor. Yani "çerezsiz" olmak bizi kapsam dışına çıkarmaz ama rıza da doğurmaz; genel KVKK md. 5 değerlendirmesi yapılır (aşağıdaki denge testi).
  3. §9 — Aydınlatma, hukuki sebepten bağımsız olarak siteye girişte yapılmalı ("pop-up gibi bir bilgilendirme yoksa aydınlatma yükümlülüğüne aykırılık gündeme gelebilir") ve çerezin adı, amacı, süresi, birinci/üçüncü taraf oluşu yazılmalı. Gizlilik metninin içine gömülü tek paragraf yeterli sayılmıyor.

2. Sitede gerçekte ne var (koddan ve canlı betikten doğrulandı)

  • Çerezler (hepsi birinci taraf, zorunlu): better-auth oturum çerezleri, kolaytercih.profil, kolaytercih.liste-sayi. Reklam/üçüncü taraf çerez yok.
  • Rybbit: kendi sunucumuzda, sunucu Türkiye'de (178.211.130.206, Pentech/Bursa) → yurt dışı aktarım yok. Çerez yazmıyor. Ama canlı betik (/api/script.js) incelendiğinde:
    • Her ziyaretçide localStorage'a rybbit-visitor-id yazıyor (yalnız feature flag açıkken gönderilir; bizde kapalı → gönderilmiyor).
    • Girişte localStorage'a rybbit-user-id yazıyor ve her olaya ekliyor.
    • Anonim ziyaretçiyi IP + tarayıcı bilgisinin özetiyle tanıyor.
    • Panel ayarı (herkese açık tracking-config ucundan okundu): trackCopy: true, trackFormInteractions: true, trackButtonClicks: true, trackUrlParams: true, trackErrors: true, webVitals: true, sessionReplay: false.
  • Bulgu A — kopyalama izleme açık. Kullanıcının kopyaladığı metnin ilk 500 karakteri Rybbit'e gidiyor. Danışman cevabını ya da kendi mesajını kopyalayan öğrencinin metni analitiğe düşer. "Kitle ölçümü" sınırını aşar; kapatılmalı.
  • Bulgu B — gizlilik metni eskimişti. "E-posta adresin ve adın analitiğe kaydedilir" diyordu; kod 21 Eylül'den beri (c055e82) yalnız kimlik numarası gönderiyor. Metin düzeltildi. Rybbit'te o tarihten önce yazılmış e-posta/ad kayıtları duruyorsa silinmeli.
  • Bulgu C — form izleme zararsız. Yalnız alan adı/türü gidiyor, değer gitmiyor.
  • Ham sıralama: sayfa adreslerinde artık ?sira= taşınmıyor (yalnız /api/… çağrılarında; Rybbit bunları görmez), /sonuc maskeli. Eski satırlar panelde duruyor olabilir (BACKLOG #31).

3. Meşru menfaat denge testi (KVKK md. 5/2-f)

Rehber §4 bu testi yapmayı tavsiye ediyor; kayıt olarak burada dursun.

  • Menfaat: sitenin hangi sayfalarının kullanıldığını, sihirbazın nerede bırakıldığını ve hataları görmek. Gerçek, güncel, hukuka uygun.
  • Zorunluluk: bu bilgi ölçüm olmadan elde edilemiyor; daha az veriyle çalışan bir yol seçildi (çerez yok, IP saklanmıyor, sıralama bantlı, hassas adresler maskeli, ekran kaydı kapalı, veri kendi sunucumuzda).
  • Kişiye etkisi: düşük. Siteler arası takip yok, reklam yok, profil çıkarılmıyor, üçüncü tarafa aktarım yok. Makul beklenti içinde.
  • Güvenceler: ayrı çerez politikası, ilk ziyarette bilgilendirme, tek tıkla kapatma (itiraz hakkı), e-posta/ad analitikte yok.
  • Zayıf nokta: girişli kullanıcının ziyareti hesap kimliğiyle eşleşiyor. Bu "anonim istatistik" değil, takma adlı veri; §5.9'un en dar okumasının dışında. Savunması: yalnız hesabı olan kullanıcıda, yalnız kendi sitemizde, açıkça bildirilmiş, kapatılabilir. Kalan risk: düşük-orta. Sıfıra indirmek istersek RybbitIdentify kaldırılır; bedeli "sihirbaz → giriş → ödeme" hunisinin kişi bazında birleşmemesi.
  • 18 yaş altı: kitlenin bir kısmı 17 yaşında. Ölçüm pazarlama için kullanılmadığından ek rıza doğmuyor; metin sade dille yazıldı (Rehber §9).

4. Yapılanlar (kod)

  • src/app/cerez-politikasi/page.tsx — çerez politikası + çerez aydınlatma metni (ad, amaç, süre, taraf; ölçümün ne topladığı; hukuki dayanak; yönetim).
  • src/components/olcum-tercihi.tsx — "Ölçümü kapat" düğmesi (Rybbit'in kendi disable-rybbit kapısı; kimlik kayıtlarını da siler).
  • src/components/cerez-bilgi.tsx + layout.tsx — ilk ziyarette bir kez görünen bilgi bandı. Kabul/ret yok, çünkü sorulan rıza yok.
  • src/app/gizlilik/page.tsx — "Çerezler ve analitik" bölümü gerçeğe göre düzeltildi.
  • Alt bilgiye ve sitemap.ts'e sayfa eklendi.

5. Bilal'in yapacakları

Yayından önce (politika bunları doğru varsayıyor):

  1. Rybbit paneli → site ayarları → kopyalama izlemeyi (Copy) kapat. Doğrulama: curl -s https://rybbit.kolaytercih.com/api/site/tracking-config/f2cb042c657e çıktısında "trackCopy":false görünmeli.
  2. Aynı ekranda IP adresi saklama (Track IP Address) kapalı mı bak (varsayılan kapalı). Açıksa kapat.
  3. Oturum kaydı (Session Replay) kapalı kalsın. Açılacaksa önce politika ve denge testi güncellenir.

Yakın zamanda:

  1. Rybbit kullanıcılar ekranında 21 Eylül öncesinden kalan e-posta/ad kayıtları varsa sil.
  2. "User ID Salting" ayarı: açılırsa anonim ziyaretçi kimliği her gün sıfırlanır (en temiz hâl), bedeli girişsiz ziyaretçide "geri dönen" ölçümünün kaybı. Karar senin; politika iki hâlde de doğru.
  3. Ölçüm verisi için saklama süresi belirle (öneri: 24 ay) ve belirleyince politikaya yaz.
  4. Gizlilik sayfasındaki [şirket unvanı ve adresi eklenecek] hâlâ boş; çerez politikası veri sorumlusu için o sayfaya atıf yapıyor.
  5. Bilgi bandını telefonda bir kez gözle kontrol et (alt kenarda, KaydetBanner ile aynı yerde, onun üstünde açılır).

6. Ne zaman onay penceresi gerekir

Şunlardan biri eklendiği gün: Google Analytics / Meta Pixel / TikTok Pixel, reklam ya da yeniden hedefleme, gömülü YouTube/sosyal eklenti, Rybbit oturum kaydı, Rybbit bulut sürümüne geçiş (üçüncü taraf + yurt dışı). O gün "Kabul et" ile "Reddet" eşit görünürlükte olmalı ve rıza verilmeden betik yüklenmemeli.

Kaynaklar