SORU
2 Ocak 2011, Pazar


Bir normal ifade içine kötü niyetli kod koymak için herhangi bir yolu var mı?

Ortak web sayfam için düzenli ifade arama özelliği eklemek istiyorum. HTML çıkış kodlama dışında, hiçbir şey kötü niyetli kullanıcı girişi karşı korumak için ne yapmak gerekir?

Google aramaları ilgilenmiyorum olan insanlar converse sorun-- düzenli ifadeler kötü niyetli giriş--tespit etmek için kullanarak çözme tarafından yok edilmiş durumda. Benim senaryoda, kullanıcı girişnormal bir ifade.

Bu kullanacağımNormal ifadekütüphanede .(C#) NET.

CEVAP
2 Ocak 2011, Pazar


Hizmet reddi ile ilgilidir

Yukarıdaki diyagram ile en yaygın endişe hizmet reddi üstel‐ya da süper‐üstel bile gitmek patolojik desenleri ile saldırı! — ve sonsuza kadar çözmek için görünür. Bu sadece belirli giriş verileri ortaya çıkabilir, ama genellikle bunun bir önemi yok bir onda yaratabilir.

Bunlar, bunlar bazı derleme zamanı sırasında tespit edilebilir, çünkü biraz ne kadar zeki kullanıyorsun düzenli derleyici oluyor bağlıdır. Özyineleme uygulayan düzenli Derleyiciler genellikle yerleşik özyineleme‐derinlik sayacı olmayan ilerleme kontrol etmek için var.

Russ Cox mükemmel 2007 kağıt üzerinde Regular Expression Matching Can Be Simple And Fast (but is slow in Java, Perl, PHP, Python, Ruby, ...) bahsediyor yolları en modern NFAs, tüm gibi yeni nesil Henry Spencer'ın kodu, acı önemli bir performans düşüşü, ama bir Thompson tarzı NFA var böyle bir sorun.

Eğer sadece DFAs çözülebilir desen kabul edersen, onlar gibi derleme, ve daha hızlı, çok daha hızlı muhtemelen çalışacak. Ancak, zaman alırzamanbunu yapmak için. Cox kağıdı bu yaklaşım ve eşlik eden sorunları bahseder. Bu uzay–zaman‐dışı ticaret bir klasik çıkıyor.

Bir DFA, harcama daha fazla zaman bina (ve daha ayrılırken Birleşik Devletleri), oysa bir NFA harcamak daha fazla zaman, yürütme, beri olabilir birden çok durum aynı anda ve aynı yer yemeğini ve CPU.

Hizmet reddi Çözümler

Muhtemelen en mantıklı yol için adres bu kalıplar üzerinde kaybeden son bir ırk ile ısı‐ölüm evren sarma onlarla bir zamanlayıcı etkin bir yerlere maksimum süre izin için kendi yürütme. Genelde bu kadar, çoğu HTTP sunucuları sağlayan varsayılan zaman aşımı süresi çok daha az olacaktır.

Orada çeşitli şekillerde uygulamak bu kadar basit bir form alarm(N) C düzeyi için bir çeşit try {} blok yakalar alarm tipi özel durumlar, tüm yol yumurtlama kapalı yeni bir iş parçacığı, özel olarak oluşturulmuş bir zamanlama kısıtlama inşa edilmiş.

Kod Belirtme

Kod belirtme, veya dize bu izin vermemek için bazı mekanizmalar olduğunu itiraf düzenli dilde derlemek için gidiyoruzgerekirsağlanacak. Bile kod belirtme, sadece kod dili kullanıyorsunuz gerekir kısıtlamak onları; onlar yok arama yapabilmek için harici kod, ancak eğer onlar olabilir var sorunlar çok daha büyük.

Örneğin, Perl bir kod belirtme çizgileri, yukarıdaki diyagram oluşturulan dize aradeğerleme (bu olurdu, onlar derlenmiş sırasında çalışma zamanı) sürece özel lexically kapsamlı pragma use re "eval"; aktif akım kapsam.

Böylece hiç kimse, örneğin rm -rf *, gibi çalışma sistemi programlar için bir kod çağrısı gizlice olabilir. Kod belirtme güvenlik duyarlı olduğundan, Perl, tüm aralıklı dizeleri varsayılan olarak devre dışı bırakır, ve yeniden etkinleştirmek için gitmek var.

Kullanıcı Tanımlı \P{roperties}

Güvenlik açısından önemli bir konu ile ilgili Unicode‐stil özellikleri-, *, *6\pM\p{Pd}, ya \p{Script=Greek} — onun gibi bir tane daha kaldıolabilirbu sistemi destekleyen bazı düzenli derleyici var.

Sorun bu bazı olası özellikleri kümesi, kullanıcı genişletilebilir olmasıdır. Bu gerçek kod belirtme özel özellikleri fonksiyonlar \p{GoodChars} \p{Class::Good_Characters} gibi bazı özel namepace adlı etmeniz anlamına gelir. Dil bu işler nasıl bakarak değer olabilir.

Korumalı alan

Perl, Safe modülü ile korumalı bir bölme ad görünürlük kontrolünü verecek. Diğer dillerdeki benzer korumalı alan teknolojileri sunuyoruz. Eğer bu tür cihazlar varsa, özellikle güvenilmeyen kod sınırlı yürütme için tasarlanmıştır çünkü onları içine bakmak isteyebilirsiniz.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • David Wills

    David Wills

    31 Aralık 2007
  • Diogo Oliveira

    Diogo Olivei

    4 HAZİRAN 2006
  • Dylan Dubay

    Dylan Dubay

    10 Temmuz 2013