Post Edilen Yazıdaki Zararlı Kodlar Nasıl Temizlenir?

Ç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

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.

<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

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. */

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir