چگونه از حملات نفوذ کننده به SQL جلوگیری کنیم ؟
1397/02/29 15:12 , بهزاد ناظمی

چگونه از حملات نفوذ کننده به SQL جلوگیری کنیم ؟

قبل از اینکه ما در مورد چگونگی جلوگیری از نفوذ به SQL صحبت کنیم، باید از تاثیر حمله نفوذی به SQL که یکی از خطرناک ترین حملات در وب است مطلع شویم.

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

اگر شما نیاز دارید که بیشتر درباره نفوذپذیری خود  SQL و انواع آن و همه چیزهای دیگر، بیشتر بدانید، میتوانید با  یک جستجوی ساده در گوگل ان چه نیاز دارید جستجو کنید.

یک راه حل این است که پارامترهای درخواست شده از طرف کاربر را پاک کنید.در نظر داشته باشید که راه حل که ما با شما به اشتراک می گذاریم، مانند بیشتر راه حل های داخل وب نیست که به هر دستور SQL مراجعه کند و متغیرهای درخواست را به صورت یکجا پاک کند.

راه حل من جلوگیری از نفوذ به  SQL ، بدون از دست رفتن فایل های CMS شما است.

خوب، شاید کسی که از PHP استفاده می کند می گوید این مساله راه حل آسانی دارد ،  فقط استفاده از یک تابع مانند mysql_real_escape_string یا mysqli_real_escape_string است.

اما این کار فقط در آرایه یک بعدی انجام می شود، در مورد یک آرایه چند بعدی چگونه است؟

خوب، ما باید موارد آرایه را به صورت بازگشتی تکرار کنیم. بنابراین آنچه ما انجام خواهیم داد جلوگیری از نفوذپذیری SQL به یک آرایه چند بعدی است.

راه حل

این کد جادویی برای آرایه های تک بعدی و همچنین چند بعدی با استفاده از php است:

if (!function_exists("clean")) {
 
//Gets the current configuration setting of magic_quotes_gpc if on or off
 
if (get_magic_quotes_gpc()) {
 
function magicquotes_Stripslashes(&$value, $key) {
 
 $value = stripslashes($value);
 
}
 
$gpc = array(&$_COOKIE, &$_REQUEST);
 
array_walk_recursive($gpc, 'magicquotes_Stripslashes');
 
}
 
function clean(&$value, $key) {
 
//here the clean process for every array item
 
// use mysqli_real_escape_string instead if you use php 7
 
 $value = mysql_real_escape_string($value);
 
}
 
}
 
$req = array(&$_REQUEST);
 
array_walk_recursive($req, 'clean');

تابع php که از طریق آرایه چند بعدی انجام می شود: array_walk_recursive است.

فقط پس از اتصال به پایگاه داده، این کد را در بالای سایت یا فایل هدر خود قرار دهید، فایل شما می تواند up.php یا header.php یا چیزی مشابه باشد.از آنجا که اگر از این کد قبل از اتصال استفاده می کنید، خطایی را نشان خواهد داد،  زیرا شما از تابع mysql_real_escape_string که نیاز به اتصال SQL دارد، استفاده می کنید.اگر از PHP 7 استفاده می کنید، متوجه خواهید شد که افزونه MySQL حذف شده است، بنابراین برای اینکه کد بالا را کار کنید، باید mysql_real_escape_string را با mysqli_real_escape_string جایگزین کنید.

 یک نکته که باید در مورد این کد ذکر کنیم، شما بایستی پارامترهای SQL خود را در تمام صفحات بین نقل قولهای زیر بنویسید:

mysql_query("select * from users where email='$email'  order by id");

توجه داشته باشید که چگونه متغیر $ ایمیل، ما بین ‘ ‘  است.

بدون توجه به دستور العمل بالا ، پیشگیری از نفوذ SQL کار نخواهد کرد.

 

برگرفته از : https://likegeeks.com

 مطالب مرتبط

۱۳ دستور مهم SQL که هر برنامه‌نویس باید بداند
آموزش جامع SQL Server
 طبقه بندی زبان های برنامه نویسی
روش‌های هوشمندانه برای استفاده از "تلفیق" در SQL
 LINQ(زبان جستجوی یکپارچه)
برنامه نویسی شیءگرا چیست؟

از آخرین دوره های آموزشی و تخفیف ها مطلع شوید

با تکمیل فرم زیر ، از اخبار و اطلاعات به روز برنامه نویسی و تکنولوژی عقب نمانید

آخرین مطالب

آموزش جامع SQL Server (جلسه ۳۱: توابع رشته‌ای – بخش ۳)
آموزش جامع SQL Server (جلسه ۳۱: توابع رشته‌ای – بخش ۳)

در جلسه قبل بخش ۲ مطالب مبحث توابع رشته‌ای یا string را به صورت کامل توضیح دادیم. و ...

آموزش جامع SQL Server (جلسه ۳۰: توابع رشته‌ای – بخش ۲)
آموزش جامع SQL Server (جلسه ۳۰: توابع رشته‌ای – بخش ۲)

در جلسه قبل، مبحث توابع رشته‌ای یا String را آغاز کردیم. به دلیل ازدیاد این توابع و برای ...

با Visual Studio Code’s Live Share گروهی برنامه‌نویسی کنیم!
با Visual Studio Code’s Live Share گروهی برنامه‌نویسی کنیم!

چه در مراحل اولیه یادگیری یک زبان برنامه‌نویسی باشید یا یک کد نویس با تجربه و ماهر باشید، ...

آخرین دیدگاه ها

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

فرم ارسال نظرات