İçeriğe atla
0 XP 0
0/5

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.

8 dk · 50 XP · 5 etkinlik

Model çıktısını güvenilmez veri saymak

Bu modülün önceki dersleri kodun kendi hatalarına baktı. Şimdi kodun bir dil modeliyle konuştuğu yeni bir yüzeye geçiyorsun. Bir dil modeli, verdiğin istemi okur ve bir metin üretir. Üretilen metin çoğu zaman yararlıdır, ama üretim süreci olasılıksaldır ve dışarıdan etkilenebilir. Model, eğitim verisinden öğrendiği kalıplara göre en olası kelimeyi seçer; bu seçim istemin içeriğine, hatta istemin içine sızmış bir metne göre değişebilir. Bu yüzden model çıktısı, tıpkı bir kullanıcının form alanına yazdığı metin gibi, güvenilmeyen bir girdi sayılır. Kodun geri kalanı bu çıktıyı hiçbir zaman körü körüne işlemez. Bu farkı unutmak, klasik bir güvenlik hatasını yeni bir kılıkla geri getirir.

Kural basittir: model çıktısını nerede kullanırsan, o bağlamın güvenlik kuralını uygula. Çıktıyı bir web sayfasına basıyorsan HTML kaçışı uygula, aksi hâlde saklı bir XSS açarsın. Çıktıyı bir veritabanı sorgusuna katıyorsan parametreli sorgu kullan, asla metni birleştirme. Çıktıyı bir kabuk komutuna veriyorsan asla doğrudan çalıştırma. Çıktıyı doğrudan koda çevirip eval ile işletmek en tehlikeli kalıptır; model neyi üretirse üretsin, o kod sınırsız yetkiyle çalışır. Kural, çıktının biçimi ne kadar düzenli görünürse görünsün değişmez; düzenli görünen bir metin bile içine gömülü bir komut taşıyabilir.

KullanıcıgirdiSistem promptutalimatModeltek kanalAraçlardosya, APIDış belgeDış belgedeki metin de modelin okuduğu aynı kanala girer.
Sistem promptu, kullanıcı girdisi ve dış belge modelin okuduğu tek akışta birleşir. Modelin ürettiği çıktı da aynı güvenmeme kuralına tabidir.