• 10-09-2019, 02:24:11
    #1
    Üyeliği durduruldu
    Merhaba
    bir veri kayıt etmek istiyorum içerisinde <a href='./test.php'>deneme</a> yaptığımda
    sqle şöyle kayıt ediyor= &lt;a href='test'&gt;deneme&lt;/a&gt;
    çıktısında ise şöyle gösteriyor = <a href='test'>deneme</a>

    post verilerinde kullandığım filtre = htmlspecialchars

    istediğim şey çıktısında deneme ye tıklanabilir olması

    sql açığı vermeden nasıl yapabilirim? kayıt esnasında addslashes kullandığımda istediğim oluyor ancak bu defa <script>alert </script> gibi açıklar oluşuyor
  • 10-09-2019, 02:41:43
    #2
    Platin üye
    Çıktı alırken;
    echo htmlspecialchars_decode($str);
    Kullanabilirsiniz.
  • 10-09-2019, 03:07:12
    #3
    Üyeliği durduruldu
    Hocam dediğin gibi kayıt ederken, htmlspecialchars kullandım ve çıktısında da htmlspecialchars_decode kullandım bu istediğim sonucu veriyor yalnız <script>alert("test");</script> dediğimde işliyor bu ve buna benzer zararlı olaylardan nasıl geçerim?
  • 10-09-2019, 03:17:16
    #4
    Platin üye
    umutacar adlı üyeden alıntı: mesajı görüntüle
    Hocam dediğin gibi kayıt ederken, htmlspecialchars kullandım ve çıktısında da htmlspecialchars_decode kullandım bu istediğim sonucu veriyor yalnız <script>alert("test");</script> dediğimde işliyor bu ve buna benzer zararlı olaylardan nasıl geçerim?
    htmlspecialchars ile filtrelemeden önce; script gibi zararlı olabilecek kodlarını aşağıdaki şekilde bozarak kayıt edebilirsin.
    $str=preg_replace("#<script[^>]*>#si","[script]",$str);
  • 10-09-2019, 03:43:28
    #5
    strip_tags($_POST['name']);
    olarak kullanabilirisn
  • 10-09-2019, 03:49:26
    #6
    düz metin olarak yollayıp ve çektirip daha sonra çektiğin yerde linkleme işlemini yap
  • 10-09-2019, 07:16:54
    #7
    Üyeliği durduruldu
    Sorun çözüldü teşekkür ederim.
  • 10-09-2019, 11:18:20
    #8
    Nasıl çözdüm hacı söylede konuyu okuyanlarda yararlansın
  • 10-09-2019, 20:31:46
    #9
    aşağıdaki fonksiyon işini görecektir.
    <?php
    function temizle($string) {
       return strip_tags(addslashes(nl2br($string)));
    }
    
    $post = temizle($_POST['data']);
    ?>