Güvenlik

Dijital Ürün Scripti Güvenlik Testleri Kontrol Listesi: Sistemin Aslında Nerede Kırıldığını Kimse Sana Söylemiyor, Kendin Test Et

E-pin scriptini canlıya almadan önce yapman gereken güvenlik testleri: yetki sınırları, fiyat oynatma, callback taklidi, log ifşası ve oturum testleri.

Dijital Ürün Scripti Güvenlik Testleri Kontrol Listesi: Sistemin Aslında Nerede Kırıldığını Kimse Sana Söylemiyor, Kendin Test Et

Güvenlik testi denince çoğu işletme sahibinin aklına siyah ekranda kod yazan biri geliyor. "Bende o kadar iş yok, sitem küçük" diyorsun ve konuyu kapatıyorsun. Oysa bir dijital ürün satış scriptinde ortaya çıkan açıkların ezici bir kısmı romantik hacker işi değil; sıradan bir kullanıcının tarayıcı adres çubuğunda bir sayıyı değiştirmesiyle bulunabilen mantık hataları. Bayi hesabıyla başka bayinin siparişini görmek, sepetteki fiyatı düşürüp ödeme yapmak, aynı stoku iki kez teslim almak gibi.

Bu testlerin hiçbiri özel bir uzmanlık istemiyor. Bir tarayıcı, bir test hesabı, biraz sabır ve sıralı bir kontrol listesi yeterli. Aşağıda kendi e-pin scriptini canlıya almadan veya yeni bir sürüm yayınlamadan önce baştan sona geçebileceğin beş test bloğunu, her birinin nasıl yapıldığını ve "geçti" saymak için hangi sonucu görmen gerektiğini anlatıyorum.

5test bloğu, tek oturumda
~3 saattam turun ortalama süresi
2gerekli test hesabı (bayi + müşteri)
0canlı veride yapılacak test

Testten önce: neden canlı sistemde deneme yapmamalısın?

Bu testlerin bir kısmı kasıtlı olarak sistemi kırmaya çalışır. Negatif adet gönderirsin, aynı stoku iki kez teslim almayı denersin, bildirim uçlarına elle istek atarsın. Canlı veride yaparsan muhasebeni bozarsın, gerçek stoku yakarsın ve en kötüsü müşteri siparişine dokunursun. Bu yüzden ilk kural şu: testler bire bir kopyası alınmış bir kurulumda yapılır. Aynı PHP sürümü, aynı veritabanı yapısı, sahte ödeme sağlayıcı anahtarları, uydurma stok kodları.

İkinci kural, her testin sonucunu yazmak. Aklında tuttuğun bulgu kaybolur. Basit bir tablo tut: test adı, beklenen davranış, gözlenen davranış, kritiklik. Bu tablo aynı zamanda geliştiricine veya yazılım sağlayıcına gönderdiğin belge olur ve "bende çalışıyor" tartışmasını bitirir.

Test 1: Yetki sınırları — bayi hesabıyla admin kapısını tıklatıyor musun?

En sık bulunan açık türü yetki kontrolünün eksik kalması. Bunun iki hali var. Birincisi dikey yetki atlama: normal bayi hesabıyla giriş yapıp admin panelinin adresini doğrudan yazmak. Arayüzde o menü görünmese bile sayfanın kendisi yetki kontrolü yapmıyorsa açılır. İkincisi yatay yetki atlama, ki pratikte daha tehlikelidir: bayi A'nın hesabıyla giriş yapıp sipariş detay adresindeki sipariş numarasını bayi B'nin siparişiyle değiştirmek.

Testi şöyle yap: iki ayrı bayi hesabı oluştur, ikisiyle de birer sipariş ver, sonra A'nın oturumundayken B'nin sipariş, fatura, bakiye hareketi ve teslimat adreslerini tek tek dene. Aynısını API uçları için de yap; arayüz kontrol etse bile API ucunun kontrol etmediği durumlar sık görülür. Beklenen sonuç her denemede yetkisiz hatası. "Boş sayfa döndü" cevabı geçti sayılmaz, çünkü boş sayfa bazen sadece şablonun çökmesi demektir.

TestYöntemBeklenen sonuçKritiklik
Dikey yetki atlamaBayi oturumuyla admin adreslerini aç403 / oturum yönlendirmeKritik
Yatay yetki atlamaBaşka bayinin sipariş id'sini dene403, veri dönmemeliKritik
Fiyat oynatmaİstekteki tutarı elle düşürSunucu fiyatını kullanmalıKritik
Negatif / ondalık adet-1 ve 0.5 adet gönderDoğrulama hatasıYüksek
Callback taklidiBildirim ucuna elle istek atİmza doğrulaması reddetmeliKritik
Çift teslimatAynı stoku iki siparişle çekKilit devreye girmeliKritik
Log / yedek ifşasıBilinen dosya yollarını dene404 veya erişim yokYüksek
Brute force30 hatalı giriş deneKilit / gecikmeOrta

Test 2: Sipariş akışını kırma denemeleri

Bir e-ticaret akışında paranın hesaplandığı yer neresiyse, saldırganın oynamak istediği yer orasıdır. Klasik hata, tutarı istemciden gelen veriye göre işlemek. Sepete ürün ekle, ödeme adımına geç, isteği bir tarayıcı eklentisiyle yakala ve tutarı bir liraya düşür. Sunucu bu tutarı kabul ediyorsa sistemin bitmiştir. Doğru davranış, sunucunun tutarı kendi veritabanındaki güncel fiyattan yeniden hesaplaması ve istemciden gelen tutarı yalnızca doğrulama için kullanması.

Aynı mantığı adet alanında dene: negatif adet bakiye yükleyebiliyor mu, ondalık adet stok sayısını bozuyor mu, aşırı büyük bir sayı taşma yaratıyor mu? Kupon alanında ise tek kullanımlık bir kodu iki farklı sekmede aynı anda kullanmayı dene. Bu yarış koşulu testi, iyi yazılmış bir e-pin satış yazılımında veritabanı seviyesinde kilitle engellenir; zayıf kurgularda ise aynı kupon on kez kullanılabilir.

Kod denetimlerinde bulunan kritik bulguların dağılımı

  • Yetki kontrolü eksikliği 40%
  • İş mantığı / fiyat doğrulama 30%
  • Ödeme bildirimi doğrulaması 18%
  • Dosya ve log ifşası 12%

Test 3: Ödeme bildirimini sen mi doğruluyorsun, saldırgan mı?

Ödeme sağlayıcıları başarılı işlemi sana bir bildirim çağrısıyla haber verir. Bu çağrı halka açık bir adrestir; yani teorik olarak herkes o adrese istek atabilir. Testin şu: sağlayıcının gönderdiği isteğin bir kopyasını al, imza alanını boz veya tamamen sil, tutarı büyüt ve isteği kendin gönder. Sipariş "ödendi" oluyor ve stok teslim ediliyorsa, sitenden bedava ürün alınabiliyor demektir.

Doğru akış üç adımlıdır. Birincisi imza doğrulaması: gelen verinin sağlayıcı gizli anahtarıyla üretilmiş özeti kontrol edilir. İkincisi tutar ve para birimi karşılaştırması: bildirimdeki tutar, siparişin kendi kaydındaki tutarla birebir eşleşmelidir. Üçüncüsü tekillik: aynı işlem numarası ikinci kez geldiğinde ikinci teslimat yapılmaz. Bunlardan biri eksikse diğerlerinin varlığı seni kurtarmaz.

Bildirimi doğrulamanın en sağlam yolu

İmzayı kontrol etmekle yetinme; siparişin durumunu sağlayıcının sorgu ucundan sen sor. Gelen bildirimi yalnızca "git kontrol et" tetikleyicisi olarak kullanan sistemler, taklit isteklere karşı doğal olarak bağışıktır.

Test 4: Dosya yükleme, yedek ve log ifşası

Bu blok sıkıcı ama en çok gerçek sızıntı buradan çıkıyor. Sırayla dene: sitenin kökünde backup.zip, dump.sql, db.sql.gz, config.php.bak, .env, error_log gibi dosyalar açılıyor mu? Kurulum dizini silinmiş mi, yoksa kurulumu yeniden çalıştırıp veritabanı ayarlarını değiştirmek mümkün mü? Dizin listeleme kapalı mı? Yükleme klasörüne PHP uzantılı bir dosya yüklenebiliyor mu, yüklenirse çalıştırılabiliyor mu?

Yükleme testinde en klasik tuzak, uzantı kontrolünü istemci tarafında yapan sistemler. Dosya adını logo.php.png yapıp gönder, sonra sunucunun kaydettiği gerçek adı ve çalıştırılabilirliğini kontrol et. Sağlam bir dijital ürün satış yazılımı yüklenen dosyanın adını kendisi üretir, uzantıyı beyaz listeyle sınırlar ve yükleme klasöründe kod çalıştırmayı sunucu seviyesinde kapatır.

Test 5: Oturum, kaba kuvvet ve ikinci faktör

Son blok hesap güvenliği. Çıkış yaptıktan sonra eski oturum çerezini geri koyup sayfa açmayı dene; oturum sunucu tarafında gerçekten iptal edilmiş mi? Parola değiştirdikten sonra diğer cihazlardaki oturumlar düşüyor mu? Giriş ekranında otuz hatalı denemeden sonra kilit veya gecikme geliyor mu? Parola sıfırlama bağlantısının süresi var mı, tek kullanımlık mı, kullanılmış bağlantı tekrar işliyor mu?

Yönetici hesapları için ayrıca ikinci faktörü test et. 2FA açıkken yalnızca parola ile giriş yapılabilen bir ara adım var mı, "beni hatırla" seçeneği ikinci faktörü tamamen atlatıyor mu? Bu testleri geçtiğinde temel hijyen tamam demektir. Panel yetki modelinin nasıl kurgulandığını özellikler sayfasında görebilir, kurumsal paketlerdeki denetim özelliklerini fiyat bölümünde karşılaştırabilirsin.

Kontrol maddesiDurum ölçütüSıklık
Kurulum dizini silindiAdres 404 dönüyorHer kurulumda
Yedek dosyası web'den erişilemezErişim engellendiAylık
Hata mesajları gizliEkranda yol/sorgu görünmüyorHer sürümde
Yükleme klasöründe kod çalışmıyorPHP indirilir, çalışmazHer sürümde
Admin yolu tahmin edilemezVarsayılan yol kapalıHer kurulumda
2FA yönetici için zorunluKapatılamıyorSürekli
Oturum çıkışta iptal ediliyorEski çerez çalışmıyorHer sürümde
Kritik işlemler loglanıyorKullanıcı, IP, saat varSürekli
Bağımlılıklar güncelBilinen açık yokÜç aylık

Bu testleri geçen bir temelden başla

Pinova, yetki modeli, ödeme doğrulaması ve stok kilitleri bu senaryolar düşünülerek kurulmuş bir e-pin yazılımı. Listeyi sıfırdan kendi kodunda kapatmak yerine hazır temeli denetle.

Bu testleri yapmak için yazılımcı olmam gerekir mi?

Çoğu için gerekmez. Yetki atlama, fiyat oynatma ve dosya ifşası testleri tarayıcı ve basit bir istek yakalama aracıyla yapılabilir. Yalnızca ödeme bildirimi testinde bir geliştiriciden destek almak işini kolaylaştırır.

Ne sıklıkla tam tur test yapmalıyım?

Her büyük sürüm güncellemesinde ve en az üç ayda bir. Ayrıca yeni bir ödeme sağlayıcısı, yeni bir bayi API'si veya yeni bir teslimat yöntemi eklediğin her seferde ilgili bloğu tekrar çalıştır.

Bulduğum açığı satıcıya nasıl bildirmeliyim?

Adım adım tekrarlanabilir bir tarif, gözlenen sonuç ve beklenen sonuç yaz. Ekran görüntüsü ekle ama gerçek müşteri verisi paylaşma. İyi bir sağlayıcı bu formatta gelen bildirime günler değil saatler içinde döner.

Sızma testi hizmeti satın almaya değer mi?

Ciroya göre değişir. Aylık hacmin ciddi seviyeye ulaştıysa bağımsız bir denetim iyi yatırım olur. Ancak bu listedeki temel testleri kendin geçmeden dışarıdan denetim almak, parayı bilinen açıkları raporlatmaya harcamak demektir.

Güvenlik, bir kez yapıp bittiği sanılan iş değil; her sürümde tekrarlanan kısa bir rutin. Bu listeyi yazdırıp her güncelleme öncesi tik atarak geçmeye başladığında, sistemindeki sürprizlerin sayısı hızla düşer. Testlerin nasıl bir panelde, hangi yetki katmanlarıyla karşılandığını görmek istersen canlı demo üzerinde bayi ve yönetici hesaplarıyla aynı senaryoları deneyebilir, sonrasında uygun paketi seçebilirsin.

Daha Fazlasını Keşfedin

Dijital ürün satışı ve otomasyon üzerine güncel rehberlere göz atın.

Tüm Yazıları Gör →
Bu yazıyı paylaşın
Bu yazıyı beğendiniz mi?
Teşekkürler!
← Tüm yazılar