Selamlar,
Tamamen son kullanıcı inputları üzerine bir tema geliştiriyorum. Tamamen ajax ile sitede form verilerini serialize() ederek PHP tarafında da
$_POST = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING);
kullanıp, integer string'ler için intval kullanmayı es geçmiyorum. Ancak yeni güncellememde son kullanıcılara strong, em gibi html taglerini de açmaya karar verdim.
bildiğimiz üzere sanitize_textarea_field() komutu tüm tagleri yok ediyor ve bir tag ayıklama ayarı yok. (keza filter_input_array ile sanitize edince de durum aynı, evet allowed tag'a ayarlamaya sahip başka bir varyasyonu var ama XSS saldırılarına karşı tam koruma sağlamadığı bilinen bir şey.)
wp_kses() ise başka bir boyut. allowed tag ayarı var ancak aptal bir stackoverflow konusunda wp_kses ile sadece strong, italic gibi basit html taglerine açmasına rağmen XSS'e maruz kalan birisini buldum.
Kafam çok aptala döndü ve HTML Purifier kullanmayı düşünüyorum ancak Wordpress ile HP kullanan birileri varsa performans açısından kayıp yaşayıp, yaşamadıklarını belirtirlerse çok sevinirim.
Tüm tagler ve attr değerlerini yasaklarken her şey çok kolay. Ancak tag izini işin içine girince karıştım bayağı.
Yolumu aydınlatacak var mı?