امنیت داده ورودی با تابع شخصی
سلام
برای امن سازی اطلاعات ورودی به دیتا بیس اگر نمی خواستم از تابع real_escape_string() استفاده کنیم، فقط قصد داشتم هر اطلاعات ورودی رو با متد زیر اعتبار سنجی کنم:
سوال اول اینکه آیا استفاده از این روشها استاندارد هست یا نه؟ یعنی به جای استفاده از متدهای موجود در PHP خودمون یک متد رو بنویسیم.
سوال دوم اینکه آیا همین کدهای نوشته شده، می تونن از SQL Enjection جلوگیری کنند یا نه؟
با تشکر از دوستان
function safeString($string)
{
$string = str_replace("\"","",$string);
$string = str_replace("'","",$string);
$string = str_replace(",","",$string);
$string = str_replace(";","",$string);
$string = str_replace("|","",$string);
$string = str_replace("\`","",$string);
$string = str_replace("\*","",$string);
$string = str_replace(" ","",$string);
$string = str_replace("=","",$string);
$string = str_replace("\n","",$string);
$string = str_replace("\r","",$string);
$string = str_replace("\x1a","",$string);
$string = str_replace("\x1a","",$string);
$string = str_replace("\x00","",$string);
return $string;
}
راه صحیح جلوگیری از sqlinjection همین است:
function sqi( $value ){
if( get_magic_quotes_gpc() ){
$value = stripslashes( $value );
}
if( function_exists( “mysql_real_escape_string” ) ){
$value = mysql_real_escape_string( $value );
}
else
{
$value = addslashes( $value );
}
return $value;
}$name= $_GET[‘name’];
$name= sqi($name);
در فایل بالا متغییر $name دارای امنیت کافی می باشد! البته ما در این مثال از دستور get استفاده کردیم, متود های ارسالی post و همچنین خواندن اطلاعات کوکی ها باید با این روش امن شوند.
$_COOKIE[”]
$_REQUEST[”]
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .