E-ticaret tarafında en pahalı hatalar kod hatası değil, kurgu hatasıdır: tutarın yanlış yerden okunması, dönüş bildiriminin doğrulanmaması, kart verisinin gereksiz yere kendi sunucunuza uğraması. Bu üç başlığı doğru kurarsanız güvenliğin de uyumun da büyük kısmını çözmüş olursunuz.

Kart verisi sizin sunucunuza hiç girmemeli

Bir KOBİ e-ticaret sitesinde kart numarasını kendi formunuzda toplamanız için neredeyse hiçbir iyi sebep yoktur. Kart verisi sunucunuza uğradığı anda, o sunucudaki her dosya, her log satırı ve her yedek uyum kapsamına girer. Doğru kurgu, kart bilgisinin doğrudan ödeme sağlayıcısına gitmesidir.

Entegrasyon modeliKart verisi nereye giderSizin yükünüz
Ortak ödeme sayfası (yönlendirme)Doğrudan sağlayıcıyaEn düşük; sitenizde kart alanı yok
Gömülü form (iframe veya sağlayıcı betiği)Doğrudan sağlayıcıyaDüşük; ama sayfanızdaki betikler kritik hale gelir
Kendi formunuz, sunucudan API çağrısıÖnce size, sonra sağlayıcıyaÇok yüksek; ciddi bir uyum programı gerektirir
Saklı kart (tokenizasyon)Sağlayıcıda saklanır, sizde yalnızca token dururDüşük; tekrar eden ödemeler için ideal

Türkiye'de iyzico ve PayTR gibi sağlayıcıların sunduğu ortak ödeme sayfası ya da gömülü form modelleri, küçük ve orta ölçekli işletmeler için hem en hızlı hem de en güvenli yoldur. Kendi formunuzda kart toplamanın tek gerçek kazancı birkaç saniyelik akış kısalmasıdır; karşılığında sunucunuzun tamamı kart verisi kapsamına girer.

PCI kavramlarını sadeleştirelim

PCI DSS bir yasa değil, kart kuruluşlarının sözleşme yoluyla dayattığı sektör standardıdır; kart verisini işleyen, ileten ya da saklayan herkesi kapsar. Küçük bir işletmenin bilmesi gereken tek stratejik fikir şudur: amacınız standardı tamamen uygulamak değil, kapsamı küçültmektir. Kart verisine hiç dokunmuyorsanız, yani ödeme sayfasını sağlayıcıya yönlendiriyor ya da onun iframe'ini gömüyorsanız, yükümlülüğünüz büyük ölçüde en kısa öz değerlendirme formuna iner; hangi formun size düştüğünü sağlayıcınıza ve bankanıza teyit ettirin. Kart verisi sunucunuzdan geçiyorsa aynı iş ağ ayrıştırması, sızma testleri ve düzenli taramalar içeren uzun bir programa dönüşür.

Kapsam küçültmenin pratik karşılığı:

  • Kart numarası, son kullanma tarihi ve CVV hiçbir koşulda veritabanınızda, log dosyanızda, e-postanızda ya da destek talebi ekinde durmasın.
  • Müşteri temsilcisi telefonda kart numarası almasın; bunun yerine ödeme bağlantısı gönderin.
  • Tekrar eden tahsilat gerekiyorsa kartı siz değil sağlayıcı saklasın, siz yalnızca token tutun.
  • Ödeme sayfanızda yüklenen üçüncü taraf betiklerini sayın. Ödeme adımında analitik ve reklam betiği çalıştırmamak, hem güvenlik hem dönüşüm açısından iyi bir karardır.

3D Secure ne yapar, ne yapmaz

3D Secure, kartı kullanan kişinin gerçekten kart sahibi olduğunu bankaya doğrulatan bir katmandır. İki somut faydası vardır: sahte kart kullanımını ciddi biçimde zorlaştırır ve başarıyla tamamlanan bir doğrulamada, kart sahibi işlemi tanımadığını iddia ettiğinde sorumluluk genellikle işletmeden bankaya kayar. Bu ikinci nokta, ters ibraz yükünü doğrudan etkilediği için çoğu KOBİ için tek başına yeterli gerekçedir.

Yapmadığı şey ise şu: 3D Secure, sipariş tutarının doğruluğunu, stokunuzun uygunluğunu ya da uygulamanızın yetki kontrollerini güvence altına almaz. Doğrulama başarılı olsa bile, tutarı yanlış yerden okuyan bir kod size para kaybettirir.

3DS akışında en sık kırılan noktalar

  • Dönüş bildirimini doğrulamamak. Sağlayıcıdan gelen sonuç mesajının imzasını ya da hash değerini mutlaka doğrulayın. Doğrulanmayan bir dönüş adresi, siparişi elle başarılı işaretlemek isteyen herkese açıktır.
  • Tutarı dönüş mesajından okumak. Ödenecek tutarı her zaman kendi veritabanınızdaki siparişten hesaplayın, gelen veriyle yalnızca karşılaştırın. Uyuşmuyorsa işlemi başarısız sayın ve kaydı işaretleyin.
  • Aynı bildirimi iki kez işlemek. Ağ hataları nedeniyle dönüş mesajı tekrar gelebilir. Sipariş numarası üzerinden tek seferlik işleme kuralı koyun; ikinci mesaj siparişi tekrar başarılı yapmasın, stok iki kez düşmesin.
  • Sepeti istemciden almak. Fiyat, indirim ve kargo bedeli sunucuda hesaplanmalıdır. Tarayıcıdan gelen fiyat bilgisine güvenen her sepet, er ya da geç bir kuruşa satış yapar.
  • Test ve canlı anahtarları karıştırmak. Anahtarları ortam değişkeninde tutun, canlıda test anahtarı bulunursa uygulama açılışta hata versin.
  • Ödeme sonuç sayfasını tek doğruluk kaynağı saymak. Müşteri tarayıcısını kapatırsa o sayfa hiç yüklenmez. Sunucudan sunucuya gelen bildirimi esas alın.

Sahtecilik ve ters ibrazı azaltmak

  • Ödeme denemesine hız sınırı koyun: örneğin aynı IP ya da aynı hesaptan 10 dakika içinde 5 başarısız denemeden sonra ek doğrulama isteyin. Çalıntı kart listesini sırayla deneyen saldırılar tam olarak bu deseni üretir.
  • Elle inceleme için somut bir eşik yazın: örneğin ortalama sepet tutarınızın üç katını aşan, fatura ve teslimat ili farklı olan ve aynı gün kargo seçilmiş siparişler otomatik olarak inceleme kuyruğuna düşsün.
  • Teslimat kanıtını saklayın: kargo takip numarası ve teslim kaydı, itirazlarda en güçlü belgedir.
  • Ekstrede görünecek işletme adının müşterinin tanıyacağı marka adı olduğundan emin olun. Tanınmayan isim, gereksiz itiraz üretir.
  • Ön bilgilendirme formu ve mesafeli satış sözleşmesi ödeme öncesinde onaylatılsın, onay kaydı tarih ve sürümüyle saklansın. İptal ve iade koşullarınız sipariş sayfasından tek tıkla görünür olsun.
  • İade ve iptal yetkisini herkese vermeyin; iade işlemlerini denetim kaydına yazın ve tutar üst sınırı tanımlayın.

Sunucu tarafında değişmez kurallar

  1. Tüm ödeme akışı HTTPS üzerinde çalışsın, karışık içerik uyarısı kalmasın.
  2. Sipariş kaydı önce oluşturulsun, ödeme sonucu o kaydın durumunu güncellesin. Ödeme öncesi sipariş yoksa mutabakat yapamazsınız.
  3. Ödeme sağlayıcısıyla günlük mutabakat alın; kendi kayıtlarınızla kuruşu kuruşuna karşılaştırın.
  4. Ödeme kayıtlarında kart numarası değil, yalnızca maskelenmiş son dört hane ve işlem kimliği dursun.
  5. Başarısız ödemeleri de kaydedin; sahtecilik desenlerini ancak bu kayıtlarla görebilirsiniz.

Sık yapılan hatalar

  • 3D Secure'ü dönüşümü düşürüyor gerekçesiyle kapatmak ve ters ibraz riskini tamamen üstlenmek.
  • Dönüş bildirimini yalnızca gelen parametrelere bakarak kabul etmek.
  • Ödeme sayfasına dışarıdan betik yüklemek.
  • Destek ekibine kart bilgisi içeren ekran görüntüsü göndertmek.
  • Ödeme entegrasyonunu bir kez kurup sağlayıcının bildirimlerini yıllarca takip etmemek.

Özet

  1. Kart verisini sunucunuza hiç sokmayın; ortak ödeme sayfası ya da sağlayıcı formu kullanın.
  2. Amacınız PCI kapsamını küçültmek olsun; kart verisine dokunmayan mimari, uyumun kısa yoludur.
  3. 3D Secure'ü açık tutun; sahteciliği azaltır ve sorumluluğu lehinize kaydırır.
  4. Tutarı daima kendi veritabanınızdan hesaplayın, dönüş bildiriminin imzasını doğrulayın, aynı bildirimi iki kez işlemeyin.
  5. Günlük mutabakat alın ve başarısız denemeler dahil her işlemi maskelenmiş biçimde kaydedin.