Veritabanınımıza veri girişi yaparken oldukça SQL saldırılarına dikkatli olmalıyız. Bu konuda alabileceğimiz en önemli tedbir veritabanına kayıt edilecek bilgilerinizi temizlemektir (sanitize). Bunun içinde kullanabileceğiniz en kapsamlı fonksiyonlardan birisini sizinle paylaşmak istedim. Umarım faydası dokunur.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
<?php function cleanInput($input) { $search = array( '@<script[^>]*?>.*?</script>@si', // Javascript kodlarını temizleme '@<[\/\!]*?[^<>]*?>@si', // HTML kodlarını temizleme '@<style[^>]*?>.*?</style>@siU', // Stil kodlarını düzenleme '@<![\s\S]*?--[ \t\n\r]*>@' // Çoklu yorum satırlarını temizleme ); $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; } //YUKARIDAKİ FONKSİYONLARIN KULLANIMI $kotu_veri = "Merhaba <script src='http://www.kotuniyetlibirsite.com/kotu_script.js'></script>guzel bir gun!"; $temiz_veri = sanitize($kotu_veri); echo $temiz_veri; // Çıktı: Merhaba guzel bir gun!" // Ya da formlardan gelen veriyi şu şekilde temizleyebilirsiniz: //$_POST = sanitize($_POST); //$_GET = sanitize($_GET); ?> |
Kaynak: http://css-tricks.com/snippets/php/sanitize-database-inputs/