Upload
mahdi-eshraghi-mhe
View
806
Download
9
Embed Size (px)
DESCRIPTION
what's SQL injection attack, and how to prevention it.
Citation preview
:دهندهارائهمهدیاشزاقی،محسنصادقی
:استاددرسدکتزمحمدنادری
داشگا آصاد اسالهی احذ ػلم تحقیقات اصفاى
ی درس پایگاه داده پیشرفتهارائه
SQL INJECTION
2/14 ، آسیة پزیشی، حول، پیشگیشیSQL INJECTION: پایگا داد پیششفت
1392آتاى -ذی اششاقی، هحسي صادقی ه
.ػی حول ت تشاه ای تحت ب•
.تشای دستشسی غیشهداص اهحذد SQLاستفاد اص دستسات •
.تضسیق ایي دستسات تا استفاد اص سدی ای فشم ای تشاه تحت ب•
اص سی 2010دس سال سش آسیة پزیشی تشاه ای تحت ب 10یکی اص •
OWASP
چزا تشریق یک مسئله است؟
3/14 ، آسیة پزیشی، حول، پیشگیشیSQL INJECTION: پایگا داد پیششفت
1392آتاى -ذی اششاقی، هحسي صادقی ه
.تضسیق ت تشاه ب، ت هؼی دستشسی ت داد ای رخیش شذ دس پایگا داد است•
.تشخی اص داد ا تسیاس هن ستذ، واذ داد ای یک تاک•
.دستشسی غیش هداص ت ایي داد ا یؼی قص خاهؼیت هحشهاگی داد ا•
!تید ایي دستشسی غیشهداص، یشای کاهل است•
.تاتشایي تضسیق، تست ت هحل حول، تسیاس خطشاک است•
آسیب پذیزی چگونه بوجود می آید؟
4/14 ، آسیة پزیشی، حول، پیشگیشیSQL INJECTION: پایگا داد پیششفت
1392آتاى -ذی اششاقی، هحسي صادقی ه
شزحنوعآسیبپذیزی
.هیاى ع داد ایی ک تسط سدی پزیشفت هی شذ قض دس توایض کاهلنوعاول
ک ایگ هتغیشای کی ت ػاى کذ . تدضی تحلیل ػولیات تا صهاى اخشا تأخیشنوعدوم .هثغ دس ظش گشفت هیشذ
طشاحی تؼشیف ضؼیف خصصیات هتغیش دس صهاىنوعسوم .یک هتغیش ػذدی هیتاذ ت ػاى سشت ن پزیشفت شد: هثال-
.سدی ت دسستی چک ویشد. صست ویگیشد اػتثاسسدی سدی ا ت دسستینوعچهارم
حمالت تشریقانواع
5/14 ، آسیة پزیشی، حول، پیشگیشیSQL INJECTION: پایگا داد پیششفت
1392آتاى -ذی اششاقی، هحسي صادقی ه
.تضسیق ت خوالت ششطی، تا یک ششط ویش صحیح•
SELECT accounts FROM users WHERE
login=’’ or 1=1 -- AND pass=’’
-- or 1=1 ’: ػثاست تضسیق شذ•
Tautologies attack
حمالت تشریقانواع
6/14 ، آسیة پزیشی، حول، پیشگیشیSQL INJECTION: پایگا داد پیششفت
1392آتاى -ذی اششاقی، هحسي صادقی ه
تلیذ پیغام ای خطا تسط پایگا داد، تشای فویذى هشخصات پایگا داد خت •
.تضسیق
localhost/iauzc_ir/chat.php?chat_id=12:آدرس
’localhost/iauzc_ir/chat.php?chat_id=12:دستورخطا
:پیغام خطا
You have an error in your SQL syntax; check the manual that corresponds to
your MySQL server version for the right syntax to use near ''' at line 1
Logically Incorrect Queries attack
حمالت تشریقانواع
7/14 ، آسیة پزیشی، حول، پیشگیشیSQL INJECTION: پایگا داد پیششفت
1392آتاى -ذی اششاقی، هحسي صادقی ه
.صحیح اهي اتصال داد هیشد queryت یک unionتضسیق تا استفاد اص دستس •
.ذف تذست آسدى اطالػات اص خذلای دیگش پایگا داد•
“’ UNION SELECT cardNo from CreditCards where acctNo=10032 - -”
SELECT accounts FROM users WHERE login=’’ UNION SELECT cardNo from CreditCards where acctNo=10032 --
AND pass=’’ AND pin=
Union Query attack
حمالت تشریقانواع
8/14 ، آسیة پزیشی، حول، پیشگیشیSQL INJECTION: پایگا داد پیششفت
1392آتاى -ذی اششاقی، هحسي صادقی ه
.شاسایی پاساهتشای آسیة پزیش، اص طشیق اسد کشدى هقادیش هختلف تشسسی خاتای آى•
1.Blind injection
استتاج تایح تا تخ ت سفتاس صفح
User Name: admin
Password: hi' or 'a'='a
دس صست اهي تدى تشاه، پیغام خطای هاسة هیذذ دس غیش ایصست تذى خطا دستسات .اخشا هیشد
2 .Timing attack
کسب اطالعات از طریق تأخیر
Inference attack
حمالت تشریقانواع
9/14 ، آسیة پزیشی، حول، پیشگیشیSQL INJECTION: پایگا داد پیششفت
1392آتاى -ذی اششاقی، هحسي صادقی ه
تغییش ظاش حول کذ ت هظس فشاس اص ساای خلگیشی اص تضسیق•
.، هخة خاهش شذى پایگا داد هیشدloginاسد کشدى دستس صیش دس فیلذ •
“legalUser’; exec(0x73687574646f776e) - - ”
Alternate Encodings attack
روشهبی دفبع در بزابز تشریق
10/14 ، آسیة پزیشی، حول، پیشگیشیSQL INJECTION: پایگا داد پیششفت
1392آتاى -ذی اششاقی، هحسي صادقی ه
.های ثابتی که از قبل تعریف شده اندqueryاستفاده از .پارامترهابدون دادن مقادیر sqlکامل کد تعریف •قوی روی پارامترها و در انتها پاس دادن پارامتر type checkingاعمال •
.queryبه . – or 1=1 ‘جلوگیری از مقادیر ورودی غیر مجاز مانند •
Prepared statement
روشهبی دفبع در بزابز تشریق
11/14 ، آسیة پزیشی، حول، پیشگیشیSQL INJECTION: پایگا داد پیششفت
1392آتاى -ذی اششاقی، هحسي صادقی ه
.از کاراکترهایی که باید ترجمه شوند blacklistایجاد یک • ( (‘ ‘)با ( ‘) جایگسینی) queryتغییر کاراکترهای با معنی در • : PHPدس mysql_real_escape_string ()استفاده از تابع : مثال •
$query = sprintf("SELECT * FROM `Users` WHERE UserName='%s' AND
Password='%s'",
mysql_real_escape_string($Username),
mysql_real_escape_string($Password));
mysql_query($query);
Escaping User Input
روشهبی دفبع در بزابز تشریق
12/14 ، آسیة پزیشی، حول، پیشگیشیSQL INJECTION: پایگا داد پیششفت
1392آتاى -ذی اششاقی، هحسي صادقی ه
کمتر به کاربران privilegeاز طریق اعطای SQLIAکاهش اثر • پایگاه داده
دادن دسترسیread به کاربری که فقط حقread دارد. استفاده ازview برای کاربرانی که به قسمتی از یک جدول باید دسترسی داشته باشند. عدم اجرایDBMS به عنوانroot یاsystem مثال :MySql به صورت پیش فرض به صورتsystem رویwindows اجرا می
.شود
Least privilege
روشهبی دفبع در بزابز تشریق
13/14 ، آسیة پزیشی، حول، پیشگیشیSQL INJECTION: پایگا داد پیششفت
1392آتاى -ذی اششاقی، هحسي صادقی ه
White List Input Validation
.تعریف دقیق ورودی های معتبر• .queryاعتبار سنجی ورودی قبل از فرستادن آن به •ها برای regular expressionایجاد ساختار اعتبارسنجی قوی بر اساس •
.،تاریخ email ،zipcodeورودی هایی که فرمت خاصی دارند مانند آدرس :مانند ESAPIاستفاده از توابع اعتبارسنجی ابسار •
getValidDate()
getValidCreditCard()
getValidSafeHTML()
getValidInput()
getValidNumber()
getValidFileName()
getValidRedirectLocation()
شزح و پیبده سبسی نمونه عملی
14/14 ، آسیة پزیشی، حول، پیشگیشیSQL INJECTION: پایگا داد پیششفت
1392آتاى -ذی اششاقی، هحسي صادقی ه