Doğru Cevap
-
Eğer userların yazdığı kodları sayfada göstermeyecek isen htmlspecialchars biraz uygun olmamış sanırım.
Bence;
$postedValue = strip_tags($value, '<p><a>... kullanıcıların siteye zarar vermeyeceği taglar buraya');
Bu şekilde kaydedersen hem güvenlik sorunu olmaz hemde gerekli tagları kullanmalarına izin verebilrisin.-
katapult
Bu vermiş olduğunuz kod ile bazı sorunlar yaşamasın hocam.
Uzak siteden video felan eklenebilir veya resim çekilebilir çünkü.11 yıl önce yazılmış -
Kesali
$text1 = preg_replace('#<br />\s*?<br />(?!\s*<br />)#i', "</p>\n<p>", $value); $text2 = htmlentities($value, ENT_QUOTES, 'UTF-8'); $text3 = htmlspecialchars($value); $text4 = stripslashes($value); $text5 = get_magic_quotes_gpc($value); $text6 = strip_tags($value);
Peki tek tak avantajlarını anlatayım o zaman.$text1 = preg_replace('#<br />\s*?<br />(?!\s*<br />)#i', "</p>\n<p>", $value);
Pek bu işe uygun gözükmüyor çünkü performansı düşük olacaktır. Yazdığınız regular expression zararlı tagları bulup onları değiştirmeli orta veya üzeri derecede regular expression bilmeniz gerekli.
$text2 = htmlentities($value, ENT_QUOTES, 'UTF-8');
$text3 = htmlspecialchars($value);
İkiside neredeyse aynı sonucu verecektir aralarında aralarında çok ufak bir fark var htmlspecialchar sadece html tagları "' html'e convert eder. htmlentities işe illegal karakterler yani ş ç ı gibi karakterleride convert eder.
Tüm taglar convert edileceği için zaten herhangibir fonksiyonellik sağlanamaz.
$text4 = stripslashes($value);
Bu ise koddaki slash ları siler uzaktan yakında alakası yok.
$text5 = get_magic_quotes_gpc($value);
Böyle birt kullanım şekli olamaz zaten get_magic_quotes_gpc megic quotes açıkmı değilmi diye ini değerini döndürür.
$text6 = strip_tags($value);
strip_tags inputtan gelen tüm html taglarını siler. Gelen input sanki düz yazıymış gibi olur. Eğer tüm taglar değilde bazı zararsız tagları kullanmak istiyorsanız strip_tags($value,'<a><img><h1>'); gibi belirtebilirsiniz.
Bence en mantıklı (eğer bilmediğim atladığım bir yöntem varsa lütfen belirtin) çözüm;
$white_list='<a><img><h1><embed>...... sitene zarar vermeyen işlevsellik veren taglar'; $text = strip_tags($value,$white_list);
11 yıl önce yazılmış -
besimler
Teşekkür ederim. Bu durumda güvenliği sağlayan sadece gelen veriyi yeterli kontrollerle veritabanına yazdırmak. Direk kodu yazdırmışım ya da tagları duz yazıya cevirmişim farketmez bu durumda. Açıkcası bu içeriği ekleyecek olan şahıslar güvenilir ve sınırlı sayıda. Video veya resim eklemelerine de izin vereceğim. Yani endişem içerigi ekleyecek olanda veya icerik degil, bu şekilde bir veri eklemenin güvenliğinin sağlanması konusundaki eksikliğimdir.11 yıl önce yazılmış -
Kesali
Eğer ekleyen kişiler güvenliyse gelen verileri mysql_real_escape_string ile veri tabanına yazdırırsan sorun olmaz.11 yıl önce yazılmış
-
Cevaplar
Hiç cevap bulunamadı.