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 = "<b>test</b>gt;";
$text2 = "'test'";

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

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


Sonuç ise;
test - <b>test</b>
<b>test</b>gt; - &lt;b&gt;test&lt;/b&gt;gt;

2) Veri tabanından çektiğimiz değeri yazdırırken;
<?php echo escape($bio); ?>
<?php echo $bio; ?>

Veri tabanında bio(biography) alanımızın içeriği şu: I'am a <a href=www.ozkiremitci.com>software developer</a>

Sonuç;
I'am a <a href=www.ozkiremitci.com>software developer</a>
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;

<?php
$text = '<b>I\'am a software developer.</b><!-- Comment --> ' . '<a href="http://www.ozkiremitci.com">And php developer.</a>';

echo strip_tags($text);
echo "\n <br>";

// <b> ve <a>'ya izin verelim
echo strip_tags($text, '<p><a>');
?>

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;

<?php
$text = "I'am \"a\" php <b>programmer</b> for ten years.";

$a = htmlentities($text);

$b = html_entity_decode($a);

echo $a; // I'am &quot;a&quot; php &lt;b&gt;programmer&lt;/b&gt; ten years.
echo "<br>";
echo $b; // I'am "a" php <b>programmer</b> ten years.

?>
I'am "a" php <b>programmer</b> 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.

<script>window.location.replace("http://www.ozkiremitci.com");</script>


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

Yorumda bulunarak kendin için, senden sonrakiler için ve bu blog için bir şeyler yazabilirsin. Durma sor, paylaş. Buraya bir hatıra bırak ;)

HTML: Bazı HTML etiketlerini kullanabilirsiniz.(b,a,i vb.)
UYARI: Yorumlar onaylanmadan direk yayınlanıyor. Yorumunuzun yayında kalması için etik kurallara dikkat edelim.

© Php, E-Ticaret ve Web Programlama
Blogger ozkistyle programmer theme
Released under Creative Commons 3.0 CC BY-NC 3.0