2010-02-21 25 views
5

Not: Başka bir yerden sızan SQL enjeksiyonu ve çıkışına dikkat ediyorum - bu soru yalnızca giriş filtrelemesiyle ilgilidir.Kullanıcı girişi filtrelemesi - HTML'yi filtrelemeli miyim?

Kullanıcı filtreleme işlevlerimin yeniden yapılandırılmasının ortasındayım. o ise

Şimdi soru: parametreyi htmLawed veya HTML Purifier gibi bir filtreye geçirmek hala mantıklı mı, yoksa girişi güvenli olarak düşünebilir miyim? Bana öyle geliyor ki, bu ikisi çoğunlukla izin verilen HTML öğelerinin ve özniteliklerinin (her şeyi kaldırdığım gibi ilgilenmediğim) ayrıntılarına göre farklıdır, ancak htmLawed belgelerinin bir nedeni olabileceğini düşündüren 'dangerous characters' bölümü vardır. onu kullanmak için. Bu durumda, bunun için bir mantıksal konfigürasyon ne olurdu?

+0

Tehlikeli karakter UTF-8 denetim karakterleri olabilir. – Jacco

+0

Onlardan nasıl kurtulacağınıza dair herhangi bir öneriniz var mı? – djn

+1

Gerçekten notunu almıyorum, SQL Injection bir sql sorgusunda kötü kullanıcı girdisini engellemekle ilgili. Aslında, güvenlik açıklarının çoğu çıktı değil, kötü GİRİŞ oluyor. Bunlara "Taint ve Sink" güvenlik açıkları denir. – rook

cevap

2

senin filtreden almalısınız güvenli olduğunu düşünüyorum. Yaklaşımınızın su tutup tutmayacağını bilmenin tek nedeni, sömürüyü test etmektir. Free XSS vulnerability Scanner * veya açık kaynak kodlu wapiti kullanmanızı öneririm.

Dürüst olmak gerekirse strip_tags() herhangi bir zamanda kullanmayın çünkü javascript'i çalıştırmak için her zaman html etiketlerine ihtiyacınız yoktur! htmlspecialchars($var,ENT_QUOTES);'u seviyorum. Bu xss karşı savunmasızdır Örneğin

:

$_REQUEST[xss]='" onMouseOver="alert(/xss/)"'; 
: Eğer onmouseover kullanabilirsiniz çünkü

print('<A HREF="http://www.xssed.com/'.strip_tags($_REQUEST[xss]).'">link</a>'); 

Sen <> bu durumda javascript yürütmek gerekmez aşağıda bir örnek saldırıdır

ENT_QUOTES, bu XSS güvenlik açığını yayacak çift tırnaklardan sorumlu olacaktır.

* Bu siteye/hizmete bağlandım.

+0

Çok iyi nokta! Teşekkür ederim! http: // php adresindeki etkinliklerin bir listesini buldum.net/manual/tr/function.strip-tags.php # 82180 ve diziyi bir str_ireplace() 'a geçirdim - bununla ilgilenmelidir. – djn

+1

Lütfen [promosyon] (http://stackoverflow.com/faq#promotion) yönergelerine dikkat edin. –

0

i ne yaptığınızı benim açımdan en azından hiçbir html kodu güvenli XSS için birçok farklı yaklaşım vardır

+0

-1 Evet, ancak javascript hala bu filtreler olsa da yapabilir. – rook

İlgili konular