Php Html Tag Temizleme ve Dönüştürme [htmlentities ve html_entity_decode]

Kullanıcıdan veri girişi istenilen form işlemlerinde basit bir html tag, javascript kodu ciddi bir açığa dönüşebilir. Html tag, javascript vb. ile basit bir koda basitçe bir önlem almak için kullanılan fonksiyonlar mevcut.

htmlentities();

htmlentities ile bu taglar ascii kodda olduğu gibi html koduna dönüştürülür ve işlevini yitirir. Php' de varsayılan fonksiyonlardan olan htmlentities' i kullanarak kendi tanımladığımız bir fonksiyonu tüm girişlerde ve metin değerlerimizde kullanabiliriz.

Fonksiyon

function escape($string) { 
// Html tag kontrolü.  
// Veri girişinde tagları html karakteri olarak kaydetmesi içindir.
return htmlentities(trim($string), ENT_QUOTES, 'UTF-8'); 
}

Yukaridaki fonksiyonu iki farklı örnekte kullanırsak;


1) Metin değişkenlerde;

$text = "test";
$text1 = "testgt;";
$text2 = "'test'";

echo $text,' - ';
echo escape($text), '';

echo $text1,' - ';
echo escape($text1), '';


Sonuç ise;
test - test
testgt; - testgt;

2) Veri tabanından çektiğimiz değeri yazdırırken;


Veri tabanında bio(biography) alanımızın içeriği şu: I'am a software developer

Sonuç;
I'am a software developer
I'am a software developer


Peki bazı html taglara izin vermek istersek? strip_tags()
Yukarıdaki php fonksiyonu html ve php taglarını ayıklayarak yazdırma işlemini yapmasının yanı sıra bir de belirlediğimiz bazı tagları ayıklamaz ve olduğu gibi yazdırır.
Örnek;

$text = 'I\'am a software developer. ' . 'And php developer.';

echo strip_tags($text);
echo "\n 
";

//  ve 'ya izin verelim
echo strip_tags($text, '');
?>
I'am a software developer. And php developer.
I'am a software developer. And php developer.

Html kodu dönüştürmek html_entity_decode();
Bazende html kodu olan bir veriyi tam tersi çevirerek html tagların işlevsel hala gelmesi gerekebilir.

Örnek;

$text = "I'am \"a\" php programmer for ten years.";

$a = htmlentities($text);

$b = html_entity_decode($a);

echo $a; // I'am "a" php programmer ten years.
echo "
";
echo $b; // I'am "a" php programmer ten years.

?>

I'am "a" php programmer for ten years.
I'am "a" php programmer for ten years.
Yukarıdaki örneklemeler ve fonsiyonlar bazı tehlikelere karşı önlemler almak için zorunludur. Örneklerimiz de link olarak ele aldığımız tagları kullandık. Javascript kodu kullanarak sayfayı yönlendirmekte mümkün olduğu için ciddi bir açık vermiş olabiliyoruz. Örnek olarak javascript kodu yazayım bu yazıyı bitireyim.


Kaynaklar;
http://www.w3schools.com/charsets/ref_html_ascii.asp
http://character-code.com/turkish-html-codes.php
http://tr.php.net/strip_tags
http://php.net/manual/en/function.html-entity-decode.php
http://php.net/manual/en/function.htmlentities.php

0 yorum