Aracılığıyla paylaş


Güvenlik ve Kullanıcı Girişi

Her tür giriş (Web isteği veya URL'den veriler, Microsoft Windows Forms uygulamasının denetimlerine giriş vb.) olan kullanıcı verileri, genellikle bu veriler diğer kodu çağırmak için doğrudan parametre olarak kullanıldığından kodu olumsuz etkileyebilir. Bu durum, kodunuzu garip parametrelerle çağıran kötü amaçlı kodlara benzer ve aynı önlemlerin alınması gerekir. Güvenilmeyen olabilecek verilerin varlığını izlemek için yığın çerçevesi olmadığından, kullanıcı girişinin güvenli hale getirmesi daha zordur.

Bunlar bulunması en ince ve en zor güvenlik hataları arasındadır, çünkü güvenlikle ilgisiz gibi görünen bir kodda bulunsalar da, diğer kodlara hatalı verileri geçirmek için bir ağ geçididirler. Bu hataları aramak için her türlü giriş verisini izleyin, olası değer aralığının ne olabileceğini düşünün ve bu verileri gören kodun tüm bu durumları işleyip işleyemeyeceğini göz önünde bulundurun. Bu hataları, kodun işleyemediği girişleri aralık denetimi ve reddetme yoluyla düzeltebilirsiniz.

Kullanıcı verileriyle ilgili dikkat edilmesi gereken bazı önemli noktalar şunlardır:

  • Sunucu yanıtlarındaki tüm kullanıcı verileri, istemcideki sunucunun sitesi bağlamında çalışır. Web sunucunuz kullanıcı verilerini alıp döndürülen Web sayfasına eklerse, örneğin bir <script> etiketi ekleyebilir ve sunucu gibi çalışabilir.

  • İstemcinin herhangi bir URL isteyebileceğini unutmayın.

  • Karmaşık veya geçersiz yolları göz önünde bulundurun:

    • .. \ , son derece uzun yollar.

    • Joker karakter (*) kullanımı.

    • Belirteç genişletme (%token%).

    • Özel anlamı olan tuhaf yol biçimleri.

    • Alternatif dosya sistemi akış adları, filename::$DATA gibi.

    • gibi dosya adlarının longfi~1longfilenamekısa sürümleri.

  • Eval(userdata) öğesinin her şeyi yapabileceğini unutmayın.

  • Kullanıcı verilerini içeren bir adla geç bağlama konusunda dikkatli olun.

  • Web verileriyle ilgileniyorsanız, aşağıdakiler dahil olmak üzere izin verilen çeşitli kaçış biçimlerini göz önünde bulundurun:

    • Onaltılık karakter kaçışları (%nn).

    • Unicode karakter kaçışları (%nnn).

    • Aşırı uzun UTF-8 kaçışları (%nn%nn).

    • Çift kaçışlar (%nn, %mmnn'e dönüşür; %mm, '%' için kaçıştır).

  • Birden fazla kurallı biçime sahip olabilecek kullanıcı adlarına dikkatli olun. Örneğin, genellikle MYDOMAIN\username formunu veya username@mydomain.example.com formunu kullanabilirsiniz.

Ayrıca bakınız