Veritabanınıza veri eklerken dikkatli olmanız gerekmektedir. Girilecek veride herhangi bir SQL Injection bulunup bulunmadığının kontrol edilmesi ve sistemin çalışırlığını etkileyecek herhangi bir kod parçasınının olup olmadığının kontrol edilmesi gerekmektedir. Aşağıda bulunan metod sizleri bu sorundan kurtaracak durumdadır. Tek yapmanız gereken veritabanına girilecek verilerden önce aşağıdaki kod parçacığını çağırmanızdır. Böylelikle fonksiyon size girilen verinin saf halini dönecektir:
<?php
function cleanInput($input) {
$search = array(
'@<script[^>]*?>.*?</script>@si', // Strip out javascript
'@<[\/\!]*?[^<>]*?>@si', // Strip out HTML tags
'@<style[^>]*?>.*?</style>@siU', // Strip style tags properly
'@<![\s\S]*?--[ \t\n\r]*>@' // Strip multi-line comments
);
$output = preg_replace($search, '', $input);
return $output;
}
function sanitize($input) {
if (is_array($input)) {
foreach($input as $var=>$val) { $output[$var] = sanitize($val); }
} else {
if (get_magic_quotes_gpc()) { $input = stripslashes($input); }
$input = cleanInput($input);
$output = mysql_real_escape_string($input);
}
return $output;
}
?>
Yukarıdaki metod ile sisteme zarar verecek içeriklerden kurtulmuş oluruz. Aşağıda bulunan örnekle metodu nasıl çağıracağımızı inceleyelim ve nasıl bir sonuç aldığımızı görelim:
<?php
$bad_string = "Hello! <script src='http://www.yazilimdersi.info/bad_script.js'></script> It's a good day!";
$good_string = sanitize($bad_string); // $good_string sonuç olarak "Hello! It\'s a good day!" verisini döner.
// Bu metodu ayrıca POST ve GET isteklerinde de kullanabilirsiniz.
$_POST = sanitize($_POST);
$_GET = sanitize($_GET);
?>