PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : جلوگیری از هک sql injection



mashhadweb
March 14th, 2015, 20:14
با سلام چه جوری میشه جلوی هک های از نوع sql injection رو گرفت ؟

elementary
March 14th, 2015, 20:40
با سلام چه جوری میشه جلوی هک های از نوع sql injection رو گرفت ؟

شما باید یک سری موارد کد نویسی رو رعایت کنید

nginxweb
March 14th, 2015, 20:53
درزود

دوست عزیز موارد مربوط به sql injection بیشتر مربوط به نوع کد نویسی د encoding کدهای شما و query های ارسال به سرور میباشد اما مواردی هستش که کلی اگر رعایت کنید بسیار مفید هستند از جمله:

-چشم بسته به ورودی‌ها اطمینان نکنید به معنای ساده‌تر، اعتبار و صحت هرگونه داده‌ای که در موتور SQL قرار داده می‌شود باید بررسی شود که به معنای این خواهد بود که ارگان‌ها و سازمان‌ها باید چارچوب‎های امنیتی را در موقع طراحی رعایت و اجرا کنند که نیازمند اینست کهSQL با استفاده از کووری‌های پارامتری شده ساخته شود، تکنیکی که نیاز به کدنویسی سنگینی دارد و از طریق آن حملات SQL Injection از طریق جداسازی کدهای اجرایی و اطلاعات ورودی از یک دیگر، مانع بروز این حملات می‌شود.
2-پیام‌های خطایی که ایجاد می‌کنید با دقت بیشتری انتخاب کنید
معمولاً مهاجمان از پیام‌های خطایی که در برنامه ایجاد شده است استفاده می‌کنند تا بفمند که بهتر است چگونه به پایگاه داده حمله کنند. برنامه نویسان و مدیران پایگاه‌‌‌های داده باید به خطاهایی که در هنگام ایجاد یک ورودی غیر معمول نمایش داده می‌شوند، توجه بیشتری داشته باشند. مثلاً خطای ‘نام کاربری نمی‌تواند شامل اعداد باشد’ را که توسط پایگاه داده برگردانده می‌شود در نظر بگیرید. همین اطلاعات کم می تواند به مهاجم این کمک را بکند که در قسمت نام کاربری اعداد را وارد نکند.

3-بسته‌های مکمل نرم افزارها و پایگاه‌های داده را به طور کامل تهیه و اجرا کنید
لازم به ذکر این نکته نیست که بسته‌های مکمل‌ نرم افزاری باید به طور منظم به برنامه اعمال شوند. اعمال بسته‌های مکمل نرم افزاری یکی از تکنیک‌های امنیتی مغفول است. دلیل این امر می‌تواند، ضعف مدیریتی، عدم اطلاع رسانی و یا ضعف اطلاع رسانی عرضه کننده و فروشنده‌ی محصول و یا ترکیبی از این دو و دیگر عوامل باشد. بسیاری تنها راه برای حل این مشکل را استفاده از سیستم مدیریت بسته‌های مکمل می‌دانند که در اغلب موارد، با ایجاد یک مشکل کوچک، این برنامه‌ها به شکست کشیده می شوند.
4-از ابزارهای رصد و مانیتورینگ شبکه استفاده کنید
رصد فعالیت‌های مرتبط با دسترسی در سطح نرم‌افزارها، شاخصی است که می‌تواند شما به سرعت را از بروز حمله آگاه کند. راه حل ساده در این گونه موارد اینست که افزایش تعداد خطاها و یا افزایش در فعالیت، می‌تواند به عنوان ملاکی در نظر گرفته شود که به مدیر سیستم در مورد یک حمله‌ی در حال انجام هشدار دهد.
5-ابزارهای *****ینگ را فراموش نکنید
نرم افزارهای امنیتی بلادرنگ در کنار سیستم‌های مانیتورینگ از طریق *****کردن ترافیک‌های مشکوک و نادیده‌گرفتن دسترسی به پایگاه داده می‌توانند برای دفع حملات در حین بروز آنها استفاده شوند.
6-امنیت پایگاه داده خود را ارتقاء دهید
استفاده از سیستم‌های تصدیق هویت اضافی که ازتکنولوژی امضای منفرد(SSO)، استفاده می‌کنند، در کنار استفاده از کنترل‌های امنیتی از برنامه‌ها و پایگاه‌‌های Backend می‌تواند موجب ارتقاء محافظت از پایگاه‌های داده‌ی آسیب‌پذیر شود. مطلب دیگری که وجود دارد اینست که استفاده از سیستم‌های تصدیق هویت High end نیز در این مورد بسیار کارساز است. این سیستم‌ها این قابلیت را دارند تا ورود به سیستم را به همراه بازرسی و اعطای امتیازات ویژه برای کاربران اصلی را درکنار یکدیگر هم ارائه کند. به عبارت دیگر دسترسی ویژه فقط برای مدیران سیستم و پایگاه داده امکان پذیر است و چناچه دیگران سعی کنند، تا از این قابلیت‌های ویژه‌ که برای مدیران در نظر گرفته شده استفاده کنند، این موضوع ثبت خواهد شد و به عنوان فعالیت مشکوک گزارش خواهد شد.
ترکیب بهترین شیوه‌ها و استفاده از تکنولوژی‌هایی آتی‌ای که پس از محصول فعلی به بازار ارائه می‌شوند، در کار یکدیگر ثابت کرده است که بهترین روش برای مقابله با حملات SQL Injection که هنوز جزو دغدغه‌های شرکت‌های بزرگ و کوچک است، می‌باشد.

yastheme
March 14th, 2015, 21:19
نمونه زیر یک دریافت فرم خطرناک است که اطلاعات آن قبل از پردازش ف..تر نشده اند و به راحتی منجر به نفوذ هکر خواهد شد:



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

ms313
March 14th, 2015, 22:56
از pdo استفاه کنید یا هم داده های ورودی رو ***** کنید .

maryam_saboori
March 18th, 2015, 17:23
چندتا فیلم آموزشی در این مورد رو بهتون پیشنهاد میکنم حتما ببینید:

لینک اول (http://clicksite.ir/article.php?id=154)

لینک دوم (http://clicksite.ir/article.php?id=130)