Güvenlik

Güvenlik kontrolünüz geçti, sonra dünya değişti

Bir onay, verildiği andaki gerçeği anlatır; işlemin bugün çalışıp çalışamayacağını söylemez. Makale, ASP.NET Core ve EF Core üzerinden kurduğu örnekle onay kararının neye ait olduğunu kaydetmeyi, kullanım anında koşulları yeniden okumayı ve kontrol ile yazma arasındaki boşluğu koşullu bir güncellemeyle kapatmayı anlatıyor.

ASI Backbone Learning Christopher D. Cavell
Yayın tarihi
Okuma süresi
40 dk okuma
agent çalıştırması #25
agent çalıştırması #25
Orijinale git asibackbone.github.io

Bu haberi bildir

Özette bir hata mı var, ya da bu içeriğin sahibi misin? Mesajın doğrudan bana e-posta olarak gelir.

Mesaj türü

Kilit noktalar

  • Onay kaydını değiştirilebilir bir ApprovalStatus alanı yerine, neyin onaylandığını gösteren değişmez bir kayıt olarak tutun
  • Onayı revizyon numarası, kalemler, indirim ve ödeme koşulları gibi alanlara bağlayın; şüphedeyseniz alanı dahil edin
  • Kredi bloğu, hesap durumu gibi ön koşulları kullanım anında yetkili kaynaktan her seferinde yeniden okuyun
  • Kural değişiklikleri ve onaylayanın rolünü kaybetmesi için önceden yazılı bir politika seçin; sonucu tesadüfe bırakmayın
  • Kontrol ile yazma arasındaki boşluğu ExecuteUpdateAsync gibi koşullu bir güncellemeyle kapatın
  • Süre dolumunu gerçek son teslim tarihleri ve gözlemlenemeyen olgular için kullanın, kontrolün yerine koymayın

Onay durumunu tek bir değiştirilebilir alanda tutmak, geçmişte verilen bir kararı şu anki izin gibi okumaya yol açıyor. Örnekte bir satış temsilcisi onaylanan teklifin koltuk sayısını artırıyor, onay yeni revizyonu kapsıyormuş gibi kabul ediliyor ve müşteri kredi bloke listesindeyken teklif gönderiliyor. Yazar bunu, kontrol ile kullanım arasındaki zaman farkının günlere yayılmış hali olarak tanımlıyor.

Çözüm iki soruyu ayırmak: onay, neyin onaylandığını gösteren değişmez bir kayıt olarak kalıyor; gönderme ise güncel verilerle verilen yeni bir karar. Kararın konusu, ön koşullar, işlemi yapan kullanıcı, kurallar ve onaylayanın rolü gibi altı değişiklik türünün her biri farklı yanıt istiyor. Kullanım anındaki boşluk ise ExecuteUpdateAsync gibi koşullu bir yazmayla kapatılıyor.

Gerçek dünyada kullanımı

  • Çok kiracılı bir B2B teklif uygulamasında, gönderim anında teklifin onaylanan revizyonla birebir eşleştiğini doğrulamak
  • Kredi limiti veya hesap durumu gibi dış olgulara bağlı bir fatura ya da ödeme akışında, işlem anında bu olguları yeniden kontrol etmek
  • İndirim limiti gibi finans politikaları değiştiğinde hangi onayların geçerli kalacağını kural olarak tanımlamak
  • Yönetici onayıyla tetiklenen bir toplu işlemde, kontrol ve durum güncellemesini tek bir koşullu yazmada birleştirmek

Neden önemli

Bu tasarım hatası, her kontrolün başarılı göründüğü ama yine de yanlış teklifin müşteriye gittiği sessiz hatalara yol açar; düzeltmesi ise yeni bir kütüphane değil, kararları neye ait olduklarıyla birlikte kaydetmek ve kullanım anında yeniden kontrol etmektir.

Bu özet, ASI Backbone Learning üzerindeki orijinal yazıdan agent tarafından üretildi. Yazının tamamı ve tüm hakları ilgili yazara/yayıncıya aittir. Orijinal yazıya git

Benzer haberler

Geri bildirim

Bir hata mı buldun, bir fikrin mi var? Yazdığın mesaj doğrudan bana e-posta olarak gelir.

Mesaj türü