NASIL YAPILIR? UI Post edilen içerikte script ve zararlı kodları temizleme

arcface

Âyinesi iştir kişinin lafa bakılmaz
Kayıtlı Kullanıcı
Katılım
25 Eyl 2020
Mesajlar
216
Tepkime puanı
162
Puanları
48
Konum
istanbul
Web sitesi
www.arcface.net
Merhabalar,

Çoğu kişi genelde editörleri yönetim panelinde yaptığı için bu durumu önemsemez ama kullanıcıların içerik girdiği forum,blog sosyal medya gibi yerlerde bu tür filtrelemelere ihtiyaç duyulur.


Ne gibi zararı olabilir ki gireceği kodun diyebilirsiniz bir script yerleştirip çerez bilgilerini çalabilir ,gizli reklam yerleştirebilir, yönlendirme kodu koyabilir hiç olmadı istemediğiniz kod betiklerini koyabilir hiç olmadı html'deki kod hiyerarşisini bozabilir bunların hiç biri isteyeceğiniz şeyler değil kullanıcıdan sen sadece renklendirme yapsın tablo eklesin istersin ama o zararlı kod girdirmeye çalışır bu gibi durumlar için bir filtreleme fonksiyonu gereklidir.

bu benim kendi filtreleme fonksiyonum yıllardır kullanıyorum işimi de fazlasıyla görüyor


PHP:
<?php


function bug_crusher($text,$filter = null){

  if (!$filter) {

    $filter = '<p><a><span><strong><u><img><div><code><b><i><h1><h2><h3><h4><h5><h6><h7><em><s><blockquote><iframe><embed><pre><address><kbd><small><ul><li><ol><sub><sup><table><tr><td><th><tbody><thead>';

  }

  $text = strip_tags(htmlspecialchars_decode(stripcslashes($text)), $filter);

  $text = preg_replace('/([onON]+)([a-zA-Z]+)(\s+|)=(\s+|)(["\']+)(.*?)(["\']+)/','', $text);

  return htmlspecialchars(trim($text));

}





bu fonksiyonda eğer bir değer tanımlamaz iseniz şu etiketlere izin veriyorum.
Kod:
"<p><a><span><strong><u><img><div><code><b><i><h1><h2><h3><h4><h5><h6><h7><em><s><blockquote><iframe><embed><pre><address><kbd><small><ul><li><ol><sub><sup><table><tr><td><th><tbody><thead>



Ama olur da sadece başlık boyuları girebilirsin ve img ekleyebilsin derseniz kullanırken 2 inci parametreyi "<h1><h2><h3><img>" olarak gönderirseniz sadece bu kodlara izin verecek ve diğerlerini silecektir.



Bu ilk kısım tagları ve scripts,styles temizler ikinci kısım ise izin verdiğiniz kodlara onclick atayabilir onfocus atayabilir bunları temizliyor kısaca size tertemiz bir kod çıktısı veriyor ve gönül rahatlığıyla içerikerinizi kullanıcılara yazdırabiliyorsunuz.



Bir kaç kullanım örneği göstereyim.

PHP:
<?php



function code_clear($text,$filter = null){

  if (!$filter) {

    $filter = '<p><a><span><strong><u><img><div><code><b><i><h1><h2><h3><h4><h5><h6><h7><em><s><blockquote><iframe><embed><pre><address><kbd><small><ul><li><ol><sub><sup><table><tr><td><th><tbody><thead>';

  }

  $text = strip_tags(htmlspecialchars_decode(stripcslashes($text)), $filter);

  $text = preg_replace('/([onON]+)([a-zA-Z]+)(\s+|)=(\s+|)(["\']+)(.*?)(["\']+)/','', $text);

  return htmlspecialchars(trim($text));

}





$kullanicidangelen = "<script>alert('nasıl verdirdim uyarıyı ama");</script> <b>Lorem</b> <i onclick='alert(\'Text içi alert\');'>İpsum</i> Dolar Felan Filan";



// Bu değeri fonksiyondan geçirelim



echo code_clear($kullanicidangelen);

/* Çıktı <b>Lorem</b> <i>İpsum</i> Dolar Felan Filan olacaktır. */
 
Son düzenleme:
5,690Konular
16,885Mesajlar
9,799Kullanıcılar
alicanelagozSon üye
Üst