• 18-03-2021, 16:14:07
    #1
    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?
  • 18-03-2021, 16:17:15
    #2
    htmlspecialchars fonksiyonunu kullanabilirsiniz diye düşünüyorum.
    Ekrana basacakken de htmlspecialchars_decode kullanmayı deneyin.
  • 18-03-2021, 16:18:41
    #3
    BySocial adlı üyeden alıntı: mesajı görüntüle
    htmlspecialchars fonksiyonunu kullanabilirsiniz diye düşünüyorum.
    Ekrana basacakken de htmlspecialchars_decode kullanmayı deneyin.
    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:47
    #4
    emreires adlı üyeden alıntı: mesajı görüntüle
    function post($key)
        {
            return addslashes([COLOR=#D9DAE9][FONT=Open Sans][SIZE=2]htmlspecialchars[/SIZE][/FONT][/COLOR](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?
    Yani yine aynı şekilde javascript ile açık bırakabilir o yüzden script taglarını sildirmenizde fayda var str_replace ile.
  • 18-03-2021, 16:21:16
    #5
    BySocial adlı üyeden alıntı: mesajı görüntüle
    Yani yine aynı şekilde javascript ile açık bırakabilir o yüzden script taglarını sildirmenizde fayda var str_replace ile.
    Hocam 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 ediyorum
  • 18-03-2021, 16:23:05
    #6
    emreires adlı üyeden alıntı: mesajı görüntüle
    Hocam 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 ediyorum
    https://stackoverflow.com/questions/...-with-ckeditor

    Şöyle bir yazı var okumak isterseniz.
  • 18-03-2021, 16:23:25
    #7
    Üyeliği durduruldu
    emreires adlı üyeden alıntı: mesajı görüntüle
    Hocam 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 ediyorum
    En güvenlisi risksiz elementleri (<b>,<i>,<u> vb.) listeleyip CKeditor'de bunlara izin vermeniz, sunucu tarafında strip_tags ile kontrol edilecek tabi.

    Sorunuzun cevabına gelirsek evet var: http://htmlpurifier.org/ Ne kadar güvenli net bir şey diyemiyorum.
  • 18-03-2021, 16:32:39
    #8
    Sorunuza 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
    &lt;p&gt;test&lt;/p&gt;&lt;script&gt;alert('test')&lt;/script&gt;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:02
    #9
    YasinKose adlı üyeden alıntı: mesajı görüntüle
    Sorunuza 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
    &lt;p&gt;test&lt;/p&gt;&lt;script&gt;alert('test')&lt;/script&gt;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);
    }
    Minnettarım, teşekkürler Strip fonksiyonu tam istediğim gibi ve problemsiz çalışıyor. Elinize, emeğinize sağlık...