Compliance

Akış ve Uyumluluk için Coğrafi Kısıtlı İçeriği Doğrulama

5 min read Published Updated 930 words

Çoğu akış hizmeti ve uyumluluk hassasiyeti olan platform, üç büyük CDN'de yapılan iç denetimlere göre, konut IP'lerinin %60-80'inde coğrafi kısıtlamaları doğru şekilde uygulayamıyor. Temel neden, kötü IP veritabanları değil — asıl neden, coğrafi engellemeyi gerçekten kıran uç durumları asla test etmeyen bir test iş akışıdır. Coğrafi engellemeyi basit bir IP-ülke eşlemesi olarak gören mühendisler, bir bariyer değil, bir elek inşa ediyor.

Saf IP Sorgulamaları Neden Ölçekte Başarısız Olur

Standart yaklaşım — country_code için MaxMind veya benzer bir GeoIP veritabanını sorgulamak — veri merkezi IP'leri ve büyük ISP blokları için çalışır. Ancak, başka bir ülkedeki merkezi bir ağ geçidi üzerinden yönlendirilen mobil operatör IP'leri, birden fazla yargı bölgesinde yer istasyonları olan uydu ISP'leri ve mevcut jeopolitik sınırlar çizilmeden önce tahsis edilmiş herhangi bir IP için felaketle sonuçlanır. RFC 8805 bir coğrafi konum besleme formatı tanımlar, ancak çoğu sağlayıcı hâlâ güncel olmayan veya toplanmış veriler sunar. 2023 yılında yapılan bir çalışma, RIPE NCC veritabanındaki IP'lerin %34'ünün, sahibinin kayıtlı adresiyle eşleşmeyen bir ülke koduna sahip olduğunu ortaya koydu. Tek bir veritabanına karşı test yapmak test değildir — bu, temenni düşüncesidir.

VPN ve Proxy Tespiti: Test Etmediğiniz Atlatma Yöntemi

Akış hizmetleri VPN engel listelerine büyük yatırım yapar, ancak bu engel listeleri, onları doğrulayan test düzeneği kadar iyidir. Yaygın hata, bilinen bir VPN uç noktasından (örneğin, ticari bir sağlayıcının çıkış düğümü) test yapıp işi bitmiş saymaktır. Gerçek saldırganlar her 60 saniyede bir IP değiştirir, konut proxy ağları kullanır veya henüz işaretlenmemiş bir bulut sağlayıcısının çıkış IP'si üzerinden tünel oluşturur. Doğru bir doğrulama iş akışı, genel beslemelerden (örneğin, https://check.torproject.org/exit-addresses) bilinen açık proxy'lerin, VPN çıkış düğümlerinin ve Tor rölelerinin bir listesini çeken, ardından hizmetinizin coğrafi kısıtlı uç noktasına bir istek gönderip yanıt durumunu kontrol eden bir betik içermelidir. İşte curl ve jq kullanan minimal bir test döngüsü:

#!/bin/bash
# Test geo-restricted endpoint against a list of suspicious IPs
ENDPOINT="https://api.example.com/geo/check"
while IFS= read -r ip; do
  result=$(curl -s -o /dev/null -w "%{http_code}" --resolve "api.example.com:443:$ip" "$ENDPOINT")
  if [[ "$result" != "403" ]]; then
    echo "FAIL: $ip returned $result (expected 403)"
  fi
done < /tmp/suspicious_ips.txt

Bu betik, orijinal ana bilgisayar başlığını korurken bağlantıyı belirli bir IP üzerinden zorlamak için --resolve kullanır — bu teknik, çoğu CDN düzeyindeki coğrafi kontrolleri atlar. Hizmetiniz bu IP'lerden herhangi biri için 200 veya 302 döndürüyorsa, coğrafi engellemeniz bozuktur.

IPv6 Coğrafi Konum Boşlukları ve Sınırları Aşan Mobil Operatör IP'leri

IPv6 coğrafi konum doğruluğu birçok bölgede %50'nin altındadır, özellikle operatörlerin birden fazla ülke için tek bir /32 öneki kullandığı Avrupa ve Asya'da. Fransa'nın Strazburg kentindeki bir cep telefonu, operatör tek bir bağlantı noktası kullanıyorsa, bir Alman operatörün çekirdek ağından geliyormuş gibi görünebilir. X-Forwarded-For başlığı genellikle kullanıcının IPv6 adresini değil, operatörün NAT ağ geçidinin IPv4 adresini içerir. Bunu test etmek için, bir sınır bölgesinde (örneğin, Basel, İsviçre; El Paso, Teksas) bir mobil ağa bağlı bir test cihazından istekler gönderin ve hizmetinizden gelen coğrafi konum sonucunu cihazın gerçek GPS koordinatlarıyla karşılaştırın. Uyuşmazlık 100 km'yi aşarsa, uyumluluk ekibinizin bir sorunu var demektir — GDPR, veri işlemenin operatörün değil, kullanıcının gerçek konumuna bağlı olmasını gerektirir.

IP Kontrolünün Ötesinde Düzenleyici Uyumluluk Testi

GDPR ve COPPA, IP veritabanı satıcınızı umursamaz. Onlar, AB'deki bir kullanıcıya AB uyumlu içerik sunulup sunulmadığı ve ABD'de 13 yaşın altındaki bir kullanıcının kişisel veri toplamasının engellenip engellenmediğiyle ilgilenir. Uyumluluk için coğrafi kısıtlamaları test etmek, hizmetinizin yanıtının — yalnızca HTTP durum kodu değil — algılanan konuma göre doğru şekilde değiştiğini doğrulamanız gerektiği anlamına gelir. Örneğin, ülke başına farklı kataloglar sunan bir akış hizmeti, Birleşik Krallık'taki bir kullanıcının BK kataloğunu, Fransa'daki bir kullanıcının Fransız kataloğunu ve lisanssız bir bölgedeki bir kullanıcının "kullanılamıyor" sayfasını görmesini sağlamalıdır. Test, yanıt gövdesinde bölgeye özgü dizeleri, çerezleri ve yönlendirme hedeflerini kontrol etmeyi içermelidir. --header "CF-IPCountry: GB" ile birlikte tek bir curl (Cloudflare kullanıyorsanız) hızlı bir duman testidir, ancak yalnızca CDN katmanını test eder, uygulama mantığınızı değil. X-Forwarded-For başlığını hedef ülkelerin her birinden IP'lerle taklit eden ve ardından yanıtı bilinen benzersiz bir tanımlayıcı (örneğin, bir JSON alanı "catalog": "uk") için ayrıştıran bir test paketi oluşturun.

Tekrarlanabilir Bir QA Hattı Oluşturma

Coğrafi kısıtlama testlerini manuel olarak yapmayı bırakın. Doğrulamayı, geoip-bin paketinden geoiplookup gibi bir araç kullanarak ve birincil veritabanınızda yanlış konumlandırıldığı bilinen IP'lerin bir listesiyle birleştirerek CI/CD hattınıza entegre edin. Her yeni bir coğrafi engelleme kuralı dağıttığınızda testi çalıştırın. Çoklu kaynak yaklaşımı kullanın: her test IP'si için MaxMind, IP2Location ve ücretsiz bir RIPE NCC API'sini sorgulayın ve kaynakların çoğunluğu hizmetinizin yanıtıyla uyuşmazsa derlemeyi başarısız sayın. Aşağıdaki komut, hizmetinizin kararını üç veritabanıyla karşılaştırır:

#!/bin/bash
IP="1.2.3.4"
RESPONSE=$(curl -s "https://api.example.com/geo/check?ip=$IP" | jq -r '.country')
MAXMIND=$(geoiplookup "$IP" | awk '{print $4}')
IP2LOC=$(curl -s "https://api.ip2location.com/?ip=$IP&key=test" | jq -r '.country_code')
if [[ "$RESPONSE" != "$MAXMIND" && "$RESPONSE" != "$IP2LOC" ]]; then
  echo "WARNING: Geo response differs from majority of databases"
fi

Hiçbir veritabanı tek başına yetkili değildir. %60-80'lik başarısızlık oranını yakalamanın tek yolu, gerçek dünyadaki uç durumlarla test etmektir: mobil operatör IP'leri, IPv6 önekleri ve konut proxy'leri. Bunun altındaki her şey, olmayı bekleyen bir uyumluluk olayıdır.