Doğru Cevap
-
Php içinde 3 temel fonksiyon var. htmlentities, htmlspecialchars ve strip_tags.
htmlentities ve htmlspecialchars formdan gelen verileri databaseine zarar vermeden kaydeder yalnız. Bu işlemi yaparken özel html karakterlerini kodlar. Yani bir nevi kodları direk sitene çağırır ama işlevsellik vermez.
strip_tags ise formdan gelen html taglarını çıkarır. Ama fonksiyona ayrıca çıkarılmasını istemediğin tagları belirtirsen o taglar haric tutulur.
Aşağıdaki örnekteki p ve a tagları hariç diğer tağlar text değişkeninden silinir.
<?php echo strip_tags($text, '<p><a>'); ?>
-
llorca
Öncelikle çok teşekkür ederim Kesali,
Strip_tags() ın bu özelliğini biliyordum fakat tek başına yeterli olur mu? Sorusunun cevabını almam lazım.
Böyle bir text alanı için strip_tags güvenlik açısından yeterli olacak mıdır sence?11 yıl önce yazılmış 11 yıl önce güncellenmiş -
Kesali
Verileri veri tabanına kaydetmeden önce escape ediyorsanız. mysql_real_escape_string veya pdo/mysqli prepared statment ile zaten sql ile bir sıkıntı yaşamazsınız. PHP kodları veri tabanından çektiğiniz halde zaten çalışmayacaktır (php eval() foksiyonunu kullanmıyorsanız tabi.)
Diğer sıkıntılı kısım xss denen sitenin yapısnı bozacak yada sitenin içine eklenecek javascript kodlarını önlemek.
Senin için en mantıklı çözüm gelen veriyi önce strip_tags ile zararlı taglardan arındırıp Sonra veri tabanına kaydetmeden escape etmen sana yeterli güvenliği vede editörünün özelliklerinden faydalanmanı sağlar.
Ayrıca bu tür text editörleri özellikle kopyala yapıştır yapınca çok fazla gereksiz tag ekliyor.
Bir nevi kod yapınıda düzenlemiş olursun.11 yıl önce yazılmış -
llorca
Text editörlerin gereksiz kod ekledikleri konusunda kesinlikle haklısın.
Bu durumda senin dediğin gibi yapıp sistemi internetten indirdiğim XSS kodları ile test etmek sanırım en uygun yöntem olacaktır benim için.
Gösterdiğin ilgi ve ayırdığın zaman için teşekkür ederim Kesali.11 yıl önce yazılmış -
Kesali
Rica ederim yardımcı olabildiysem ne mutlu bana.11 yıl önce yazılmış
-
Cevaplar
Hiç cevap bulunamadı.