SQL Injection; Attack & Prevention
-
Upload
mahdi-eshraghi-mhe -
Category
Education
-
view
814 -
download
9
description
Transcript of SQL Injection; Attack & Prevention
![Page 1: SQL Injection; Attack & Prevention](https://reader030.fdocuments.net/reader030/viewer/2022020122/5480c9fbb4af9fce158b5d65/html5/thumbnails/1.jpg)
:دهندهارائهمهدیاشزاقی،محسنصادقی
:استاددرسدکتزمحمدنادری
داشگا آصاد اسالهی احذ ػلم تحقیقات اصفاى
ی درس پایگاه داده پیشرفتهارائه
![Page 2: SQL Injection; Attack & Prevention](https://reader030.fdocuments.net/reader030/viewer/2022020122/5480c9fbb4af9fce158b5d65/html5/thumbnails/2.jpg)
SQL INJECTION
2/14 ، آسیة پزیشی، حول، پیشگیشیSQL INJECTION: پایگا داد پیششفت
1392آتاى -ذی اششاقی، هحسي صادقی ه
.ػی حول ت تشاه ای تحت ب•
.تشای دستشسی غیشهداص اهحذد SQLاستفاد اص دستسات •
.تضسیق ایي دستسات تا استفاد اص سدی ای فشم ای تشاه تحت ب•
اص سی 2010دس سال سش آسیة پزیشی تشاه ای تحت ب 10یکی اص •
OWASP
![Page 3: SQL Injection; Attack & Prevention](https://reader030.fdocuments.net/reader030/viewer/2022020122/5480c9fbb4af9fce158b5d65/html5/thumbnails/3.jpg)
چزا تشریق یک مسئله است؟
3/14 ، آسیة پزیشی، حول، پیشگیشیSQL INJECTION: پایگا داد پیششفت
1392آتاى -ذی اششاقی، هحسي صادقی ه
.تضسیق ت تشاه ب، ت هؼی دستشسی ت داد ای رخیش شذ دس پایگا داد است•
.تشخی اص داد ا تسیاس هن ستذ، واذ داد ای یک تاک•
.دستشسی غیش هداص ت ایي داد ا یؼی قص خاهؼیت هحشهاگی داد ا•
!تید ایي دستشسی غیشهداص، یشای کاهل است•
.تاتشایي تضسیق، تست ت هحل حول، تسیاس خطشاک است•
![Page 4: SQL Injection; Attack & Prevention](https://reader030.fdocuments.net/reader030/viewer/2022020122/5480c9fbb4af9fce158b5d65/html5/thumbnails/4.jpg)
آسیب پذیزی چگونه بوجود می آید؟
4/14 ، آسیة پزیشی، حول، پیشگیشیSQL INJECTION: پایگا داد پیششفت
1392آتاى -ذی اششاقی، هحسي صادقی ه
شزحنوعآسیبپذیزی
.هیاى ع داد ایی ک تسط سدی پزیشفت هی شذ قض دس توایض کاهلنوعاول
ک ایگ هتغیشای کی ت ػاى کذ . تدضی تحلیل ػولیات تا صهاى اخشا تأخیشنوعدوم .هثغ دس ظش گشفت هیشذ
طشاحی تؼشیف ضؼیف خصصیات هتغیش دس صهاىنوعسوم .یک هتغیش ػذدی هیتاذ ت ػاى سشت ن پزیشفت شد: هثال-
.سدی ت دسستی چک ویشد. صست ویگیشد اػتثاسسدی سدی ا ت دسستینوعچهارم
![Page 5: SQL Injection; Attack & Prevention](https://reader030.fdocuments.net/reader030/viewer/2022020122/5480c9fbb4af9fce158b5d65/html5/thumbnails/5.jpg)
حمالت تشریقانواع
5/14 ، آسیة پزیشی، حول، پیشگیشیSQL INJECTION: پایگا داد پیششفت
1392آتاى -ذی اششاقی، هحسي صادقی ه
.تضسیق ت خوالت ششطی، تا یک ششط ویش صحیح•
SELECT accounts FROM users WHERE
login=’’ or 1=1 -- AND pass=’’
-- or 1=1 ’: ػثاست تضسیق شذ•
Tautologies attack
![Page 6: SQL Injection; Attack & Prevention](https://reader030.fdocuments.net/reader030/viewer/2022020122/5480c9fbb4af9fce158b5d65/html5/thumbnails/6.jpg)
حمالت تشریقانواع
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
![Page 7: SQL Injection; Attack & Prevention](https://reader030.fdocuments.net/reader030/viewer/2022020122/5480c9fbb4af9fce158b5d65/html5/thumbnails/7.jpg)
حمالت تشریقانواع
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
![Page 8: SQL Injection; Attack & Prevention](https://reader030.fdocuments.net/reader030/viewer/2022020122/5480c9fbb4af9fce158b5d65/html5/thumbnails/8.jpg)
حمالت تشریقانواع
8/14 ، آسیة پزیشی، حول، پیشگیشیSQL INJECTION: پایگا داد پیششفت
1392آتاى -ذی اششاقی، هحسي صادقی ه
.شاسایی پاساهتشای آسیة پزیش، اص طشیق اسد کشدى هقادیش هختلف تشسسی خاتای آى•
1.Blind injection
استتاج تایح تا تخ ت سفتاس صفح
User Name: admin
Password: hi' or 'a'='a
دس صست اهي تدى تشاه، پیغام خطای هاسة هیذذ دس غیش ایصست تذى خطا دستسات .اخشا هیشد
2 .Timing attack
کسب اطالعات از طریق تأخیر
Inference attack
![Page 9: SQL Injection; Attack & Prevention](https://reader030.fdocuments.net/reader030/viewer/2022020122/5480c9fbb4af9fce158b5d65/html5/thumbnails/9.jpg)
حمالت تشریقانواع
9/14 ، آسیة پزیشی، حول، پیشگیشیSQL INJECTION: پایگا داد پیششفت
1392آتاى -ذی اششاقی، هحسي صادقی ه
تغییش ظاش حول کذ ت هظس فشاس اص ساای خلگیشی اص تضسیق•
.، هخة خاهش شذى پایگا داد هیشدloginاسد کشدى دستس صیش دس فیلذ •
“legalUser’; exec(0x73687574646f776e) - - ”
Alternate Encodings attack
![Page 10: SQL Injection; Attack & Prevention](https://reader030.fdocuments.net/reader030/viewer/2022020122/5480c9fbb4af9fce158b5d65/html5/thumbnails/10.jpg)
روشهبی دفبع در بزابز تشریق
10/14 ، آسیة پزیشی، حول، پیشگیشیSQL INJECTION: پایگا داد پیششفت
1392آتاى -ذی اششاقی، هحسي صادقی ه
.های ثابتی که از قبل تعریف شده اندqueryاستفاده از .پارامترهابدون دادن مقادیر sqlکامل کد تعریف •قوی روی پارامترها و در انتها پاس دادن پارامتر type checkingاعمال •
.queryبه . – or 1=1 ‘جلوگیری از مقادیر ورودی غیر مجاز مانند •
Prepared statement
![Page 11: SQL Injection; Attack & Prevention](https://reader030.fdocuments.net/reader030/viewer/2022020122/5480c9fbb4af9fce158b5d65/html5/thumbnails/11.jpg)
روشهبی دفبع در بزابز تشریق
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
![Page 12: SQL Injection; Attack & Prevention](https://reader030.fdocuments.net/reader030/viewer/2022020122/5480c9fbb4af9fce158b5d65/html5/thumbnails/12.jpg)
روشهبی دفبع در بزابز تشریق
12/14 ، آسیة پزیشی، حول، پیشگیشیSQL INJECTION: پایگا داد پیششفت
1392آتاى -ذی اششاقی، هحسي صادقی ه
کمتر به کاربران privilegeاز طریق اعطای SQLIAکاهش اثر • پایگاه داده
دادن دسترسیread به کاربری که فقط حقread دارد. استفاده ازview برای کاربرانی که به قسمتی از یک جدول باید دسترسی داشته باشند. عدم اجرایDBMS به عنوانroot یاsystem مثال :MySql به صورت پیش فرض به صورتsystem رویwindows اجرا می
.شود
Least privilege
![Page 13: SQL Injection; Attack & Prevention](https://reader030.fdocuments.net/reader030/viewer/2022020122/5480c9fbb4af9fce158b5d65/html5/thumbnails/13.jpg)
روشهبی دفبع در بزابز تشریق
13/14 ، آسیة پزیشی، حول، پیشگیشیSQL INJECTION: پایگا داد پیششفت
1392آتاى -ذی اششاقی، هحسي صادقی ه
White List Input Validation
.تعریف دقیق ورودی های معتبر• .queryاعتبار سنجی ورودی قبل از فرستادن آن به •ها برای regular expressionایجاد ساختار اعتبارسنجی قوی بر اساس •
.،تاریخ email ،zipcodeورودی هایی که فرمت خاصی دارند مانند آدرس :مانند ESAPIاستفاده از توابع اعتبارسنجی ابسار •
getValidDate()
getValidCreditCard()
getValidSafeHTML()
getValidInput()
getValidNumber()
getValidFileName()
getValidRedirectLocation()
![Page 14: SQL Injection; Attack & Prevention](https://reader030.fdocuments.net/reader030/viewer/2022020122/5480c9fbb4af9fce158b5d65/html5/thumbnails/14.jpg)
شزح و پیبده سبسی نمونه عملی
14/14 ، آسیة پزیشی، حول، پیشگیشیSQL INJECTION: پایگا داد پیششفت
1392آتاى -ذی اششاقی، هحسي صادقی ه