XSS'ye karşı ilk savunma hattı olarak bir düzenli ifadeye sahibim.XSS'ye karşı ilk savunma hattı olarak Regex
public static function standard_text($str)
{
// pL matches letters
// pN matches numbers
// pZ matches whitespace
// pPc matches underscores
// pPd matches dashes
// pPo matches normal puncuation
return (bool) preg_match('/^[\pL\pN\pZ\p{Pc}\p{Pd}\p{Po}]++$/uD', (string) $str);
}
Aslında Kohana 2.3'dan.
Bu, herkese açık metinle (hiç HTML olmadan) çalışır ve bu sınama başarısız olursa girişi reddeder. Metin her zaman htmlspecialchars()
(veya daha özel olarak Kohana's flavour ile görüntülenir, diğer şeylerin arasında char kümesini ekler). Ayrıca çıkışta bir strip_tags()
koydum.
İstemci, parantez içinde bir metin girmek istediğinde sorun yaşadı. Yardımcıyı değiştirmeyi ya da genişletmeyi düşündüm, ama aynı zamanda ikincil bir düşüncem de vardı - eğer çift alıntıya izin verirsem, gerçekten doğrulamam gereken herhangi bir neden var mı?
Çıkışta kaçışa güvenebilir miyim?