CKEDITOR bildiğiniz üzere HTML kullanabilmeyi sağlayan bir editor. Problemim şu; ckeditor kullanıcılara da açık. Strip_tags yapmak zorundayım çünkü güvenlik açıkları bırakmak istemiyorum. Ama strip tags yapınca, tüm html kodları bildiğiniz üzere gidiyor. strip_tags'ın ikinci argumentine html tagları yazılırsa strip tags onlara dokunmuyor. Ama, CKEDITOR'da bir sürü html tagı var hepsini tek tek ekleyemiyorum.
Önerileriniz nedir ne yapabilirim bu konuda?
CKEDITOR ve strip_tags Problemi (PHP)
9
●121
- 18-03-2021, 16:18:41BySocial adlı üyeden alıntı: mesajı görüntüle
function post($key) { return addslashes(htmlspecialchars(trim($_POST[$key]))); }Ekrana basakende htmlspecialchars_decode kullanıyorum html kodların görünmesi adına.
Bu şekilde anladığım kadarıyla bir güvenlik açığı kalmaz, doğru mudur? - 18-03-2021, 16:19:47Yani yine aynı şekilde javascript ile açık bırakabilir o yüzden script taglarını sildirmenizde fayda var str_replace ile.emreires adlı üyeden alıntı: mesajı görüntüle
- 18-03-2021, 16:21:16Hocam düşünülünce hala bir çok açık bırakılabilir dediğiniz gibi. Bunun için hazır bir fonksiyon yok mudur? Merak ediyorumBySocial adlı üyeden alıntı: mesajı görüntüle
- 18-03-2021, 16:23:05https://stackoverflow.com/questions/...-with-ckeditoremreires adlı üyeden alıntı: mesajı görüntüle
Şöyle bir yazı var okumak isterseniz. - 18-03-2021, 16:23:25Üyeliği durdurulduEn güvenlisi risksiz elementleri (<b>,<i>,<u> vb.) listeleyip CKeditor'de bunlara izin vermeniz, sunucu tarafında strip_tags ile kontrol edilecek tabi.emreires adlı üyeden alıntı: mesajı görüntüle
Sorunuzun cevabına gelirsek evet var: http://htmlpurifier.org/ Ne kadar güvenli net bir şey diyemiyorum. - 18-03-2021, 16:32:39Sorunuza yanıt bulmak için öncelikle neyin ne işe yaradığını bilmeniz gerek. Ona göre arkadaşı yönlendirmelisiniz..
strip_tags kullanırsanız tüm html taglarını yok eder düz metin elde edersiniz ancak bu şekilde.
htmlspecialchars kullanırsanız
<p>test</p><script>alert('test')</script>metni için elde edeceğiniz yanıt şu olur
<p>test</p><script>alert('test')</script>gt;bunu ekrana basarsanız yine üstteki eklediğiniz metni düz yazı olarak gösterirsiniz. Tersine işlem yapıp decode edip ekrana basarsanız hiçbir şey yapmamış gibi aynı metni geri alırsınız sadece veritabanında tuttuğunuz metin encode edilmiş şekilde tutulur.
Bu iş için en temizi r10 da bile aktif olan Markdown taglarını kullandırmanız ancak onunla uğraşmak istemezseniz kısa bir arayış sonucu elde ettiğim güvenli tagların içerisinde olduğu bir örneği aşağıda iletiyorum.
function strip($var) { $allowed = '<div><span><pre><p><br><hr><hgroup><h1><h2><h3><h4><h5><h6> <ul><ol><li><dl><dt><dd><strong><em><b><i><u> <img><a><abbr><address><blockquote><area><audio><video> <form><fieldset><label><input><textarea> <caption><table><tbody><td><tfoot><th><thead><tr> <iframe>'; return strip_tags($var, $allowed); } - 18-03-2021, 16:53:02Minnettarım, teşekkürlerYasinKose adlı üyeden alıntı: mesajı görüntüle
Strip fonksiyonu tam istediğim gibi ve problemsiz çalışıyor. Elinize, emeğinize sağlık...