İçeriğe geç
Mühendislik

Her 11 haneli sayı TCKN değildir

PII tarayıcısını fazla hassas ayarlamak, onu kapatmakla aynı sonucu veriyor. Doğrulama algoritmasının neden şart olduğu üzerine.

Yazan Modelion Mühendislik2 dk okuma

PII tespitinde en kolay hata, regex'i geniş bırakmak. \d{11} yazarsınız, iş biter. Sonuçta T.C. kimlik numarası 11 haneli.

Sorun şu ki 11 haneli başka şeyler de var: sipariş numaraları, işlem kimlikleri, telefon numaraları (başındaki sıfırla), fatura referansları, barkod parçaları.

Fazla hassas tarayıcının sonu

Bir tarayıcı her 11 haneli sayıyı PII olarak işaretlediğinde şu zincir başlıyor:

  1. Üretim trafiğinin beklenenden çok daha büyük bir kısmı PII sinyali doğuruyor.
  2. Bu isteklere maskeleme, önbellek kapatma ve bölge çivileme uygulanıyor.
  3. Maliyet artıyor, önbellek isabet oranı düşüyor, bazı istekler gereksiz yere reddediliyor.
  4. Ekip kuralı gevşetiyor ya da tamamen kapatıyor.

Dördüncü adım kritik. Fazla hassas ayarlanmış bir güvenlik kontrolü, kapatılmış bir güvenlik kontrolüne dönüşüyor — ve bu, hiç yazılmamış olmasından kötü, çünkü arada bir güvenlik hissi yaşandı.

Doğrulama algoritması

T.C. kimlik numarasının bir doğrulama yapısı var. Kabaca:

  • 11 hane, ilki sıfır olamaz
  • İlk 10 hanenin belirli bir ağırlıklı toplamı 10. haneyi veriyor
  • İlk 10 hanenin toplamının mod 10'u 11. haneyi veriyor

Bu kontroller uygulandığında rastgele bir 11 haneli sayının geçme olasılığı yüzde birin altına düşüyor. Sipariş numaraları geçmiyor. Telefon numaraları geçmiyor.

Aynı mantık diğer türler için de geçerli:

TürDoğrulama
Kredi kartıLuhn algoritması
IBANÜlke kodu + uzunluk + mod-97
T.C. kimlikAğırlıklı toplam + mod-10

Doğrulaması olan her tür için doğrulamayı uygulamak, tespit kalitesini regex'ten tamamen farklı bir yere taşıyor.

Sinyalin üçüncü hâli

Tespit ikili bir şey değil. Sinyal şu üç bilgiyi taşıyor:

{ "detected": false, "types": [], "available": true }

available alanı, taramanın yapılabildiğini söylüyor. Tarayıcı çalışamadıysa — bağımlılık düştü, zaman aşımı oldu, içerik çözülemedi — available: false oluyor.

Bu ayrım denetimde en çok işe yarayan şey. Çünkü şu iki cümle aynı değil:

  • "PII tespit edilmedi."
  • "PII taraması yapılamadı."

Sinyalin yokluğunu temizlik sanan bir kural, en pahalı hatayı yapıyor. Doğru kural available alanını okuyor ve tarama yapılamadığında temkinli davranıyor:

- name: tarama-yapilamadi-temkinli
  when:
    - field: signals.pii.available
      operator: is
      value: false
  then:
    effect: route
    route:
      candidates: [yerel-model]
      fallbackToOriginal: false
    obligations:
      cache: { mode: off }
      auditTags: [pii_scan_unavailable]

Bu kural, tespit edilmiş PII kuralından daha az konuşulan ama en az onun kadar önemli olan kural.

Bu yazı henüz diğer dilde mevcut değil.

Blog'a dön