کد sanitize صحیح داده‌ها در هنگام ذخیره در پایگاه داده بوسیله PHP

در هنگام ذخبره داده‌ها در پایگاه داده باید بسیار محتات باشید که داده‌های شما دارای SQL Injection یا موارد مشابه تزریق کد برای استفاده‌های مخرب نباشد که به فرآیند بررسی داده‌ها به این منظور sanitize کردن داده‌ها می‌گویند. تابع PHP زیر کاملترین و کاراترین کد برای sanitize کردن رشته‌ها قبل ار درج آنها در پایگاه داه می‌باشد.

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;
  }
?>
<?php
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;
}

کد زیر نحوه استفاده صحیح از تابع بالا را نشان می‌دهد.

<?php
  $bad_string = "Hi! <script src='http://www.evilsite.com/bad_script.js'></script> It's a good day!";
  $good_string = sanitize($bad_string);
  // $good_string returns "Hi! It\'s a good day!"

  // Also use for getting POST/GET variables
  $_POST = sanitize($_POST);
  $_GET  = sanitize($_GET);
?>

دیدگاه خود را بنوبسید