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ı?
Wordpress ve HTML Purifier (XSS Saldırıları)
7
●134
- 11-02-2020, 15:19:51Selamlar,halilkaya adlı üyeden alıntı: mesajı görüntüle
Cevabınız için çok teşekkür ederim.
sanitize_textarea_field() tüm tagleri de yok eden bir komuttur. Benim yapmaya çalıştığım şey kullanıcı girişini tamamen XSS'e karşı kesip, bold, italic gibi karakterler hariç tüm HTML taglerine de kapatmak.
keza, sanitize_text_field() tek başına XSS'e karşı yine %100 koruma sağlamıyor maalesef. 2 ay kadar önce acı bir şekilde javascript operator koduyla XSS denemesine maruz kaldım. Eğer ki tinymce kullanmamış olsaydım doc. cookie çekmeye kadar yolu vardı. - 11-02-2020, 15:22:39les adlı üyeden alıntı: mesajı görüntüleYabancı birkaç arkadaşıma sordum benim paranoyakça düşündüğümü ve temel wordpress fonksiyonlarının yeterli geleceğini söylediler. Ama ben buna katılmıyorum. Kolaya kaçayım diye 2 ay sonra XSS'e maruz kalmış bir müşteri de istemiyorum.Metiss adlı üyeden alıntı: mesajı görüntüle
Benim de aklıma ilk wp_kses() geldi. Ancak wp_kses() ilk tercihim olmadı asla her zaman intval, sanitize_text_field ve yer yer esc_attr ile işimi gördüm. Konuda yazdığım gibi wp_kses'i araştırınca stackoverflow'da bir kişinin wp_kses ile XSS yediğini gördüm.bilimokur adlı üyeden alıntı: mesajı görüntüle
Başka kimseler de wp_kses'in bir ihtmal izin verdiği tag'ler içeresinde manipüle edilmiş olabileceğini söylemişlerdi. Örnek kodlar: https://brutelogic.com.br/blog/advan...pt-injections/
Araştırmalarım sırasında HTML Purifier'in çok tercih edildiğini farkettim. Şimdiye kadar kullandığım bir library olmadı asla.
Sizin düşünceniz nedir?