Puan ders bitince hesaba yazılır. Bu dersi tamamlayınca +50 XP alacaksın. Giriş yapmadan ilerlersen puan yalnız bu tarayıcıda durur.
Güvensiz serileştirme
Bir program çalışırken nesneleri bellekte tutar. Nesneyi diske yazmak, başka bir sürece göndermek ya da önbellekte saklamak gerektiğinde onu baytlara çevirir. Bu işleme serileştirme denir. Karşı taraf o baytları okuyup nesneyi yeniden kurar; bu adıma serileştirmeyi açma denir. Oturum verisini önbellekte tutan bir servis, bir kuyruğa nesne gönderen bir arka plan işi, hatta bir API'nin durum parametresi hep bu döngüyü kullanır. Sorun, geri okunan baytların nereden geldiğidir. Uygulama onları bir çerezden, bir form alanından ya da bir dosya yükünden alıyorsa ve doğrulamadan açıyorsa, saldırgan baytların içine gerçek bir nesne yerine kendi kurduğu veriyi yerleştirir. Açılan veri sıradan bir sayı ya da metin değil, çalışma zamanında yeniden canlanan bir nesnedir; bu da onu diğer girdi türlerinden daha tehlikeli kılar.
Java, PHP, .NET ve Python gibi diller serileştirmeyi açarken sınıfın kurucu kodunu ya da özel yöntemlerini otomatik çalıştırır. Saldırgan, hedef sistemde zaten yüklü sınıfları art arda dizip bir zincir kurar; buna gadget zinciri denir. Zincirin son halkası dosya okur, komut çalıştırır ya da yetkiyi değiştirir. Saldırganın kendi kodunu yüklemesine gerek kalmaz, sistemde duran kütüphaneleri kullanır. Bu yüzden savunma açık bir kod aramaz; hangi kütüphanelerin sınıf yolunda durduğuna bakar. Python'da pickle modülü, PHP'de unserialize, Java'da ObjectInputStream aynı riski taşır. Node.js'te yerleşik JSON güvenlidir, ama bazı üçüncü taraf kütüphaneler tip bilgisini de baytların içine gömer ve aynı açığı Node tarafına taşır.