امنیت در PHP – جلوگیری از SQL Injection

یکی از مباحث مورد علاقه ی هکر ها بحث SQL injection می باشد، در این روش هکر با تزریق کد های SQL به یک فایل php اطلاعات مورد نیاز خود را از دیتابیس به دست می آورد.این اطلاعات ممکن است نام کاربری و کلمات عبور،ایمیل ها و هر اطلاعات مهم دیگر باشد.

SQL-Injection

SQL-Injection

در PHP روش های مختلفی برای اینکار توصیه شده است.اما در این مطلب کوتاه قصد داریم با یک تابع کوچک جلوی این حملات را بگیریم!

از آنجایی که حملات از طریق فرم ها انجام می شود پس باید اطلاعات دریافتی از فرم ها قبل از پردازش و استفاده در برنامه امن شوند!

نمونه زیر یک دریافت فرم  خطرناک است که اطلاعات آن قبل از پردازش ف..تر نشده اند و به راحتی منجر به نفوذ هکر خواهد شد:

$name= $_GET[‘name’];

در اینجا متغییر $name اطلاعات را توسط متود get  دریافت می کند, اما خبری از ایمن سازی و بررسی اطلاعات ارسالی get نیست ! استفاده از این متغییر در دیتابیس جهت جستجو یا ویرایش  یا حتی حذف اشتباه هست!

اما چگونه مقادیر get را امن کنیم؟ راه حل عبور اطلاعات از یک صافی هست,این صافی متشکل شده از سه تابع می باشد که جهت سهولت در یک تابع مورد استفاده قرار می دهیم.

توابع stripslashes ,mysql_real_escape_string و addslashes .

شکل کلی تابع و نحوه استفاده از آن :

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[”]

7 نظر برای “امنیت در PHP – جلوگیری از SQL Injection

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *