niloofarf
عضو جدید
سلام دوستان، امروز اينجا در مورد يکی از قديمی ترين و خطرناک ترين حمله ها به وب سرور ها براتون می نويسم که حملهای به نام SQL injection است.
SQL injection[FONT="] چیست :[/FONT]
[FONT="][/FONT]
SQL injection[FONT="] چیست :[/FONT]
[FONT="][/FONT]
[FONT="]در زبانهايي که مفسر دارند اين امکان وجود دارد که کاربر مثلاً در [/FONT]text box[FONT="] ای که بايد اطلاعات خود را وارد کند، کد های مخرب [/FONT]SQL[FONT="] را وارد کند و چون اين کد ها در زمان اجرا تفسير می شوند سيستم به جای اجرا کردن کد [/FONT]SQL[FONT="] اصلی کد مورد نظر کاربر را اجرا می کند، در زير مثالهايي از چگونگی وارد کردن اين کد ها را به برنامه توضيح می دهيم :[/FONT]
[FONT="]در صورتی که دستور [/FONT]SQL[FONT="] ای که قرار است در برنامه اجرا شود به صورت زير باشد :[/FONT]
[FONT="] [/FONT]
SELECT author,title,year FROM books WHERE publisher = ‘Wiley’[FONT="][/FONT]
[FONT="] [/FONT]
SELECT author,title,year FROM books WHERE publisher = ‘Wiley’[FONT="][/FONT]
[FONT="] [/FONT]
[FONT="] [/FONT]
[FONT="]و قرار است که عبارت [/FONT]Wiley[FONT="] از طريق يک [/FONT]text box [FONT="] از کاربر گرفته شود، در صورتی که کاربر به جای آن عبارت [/FONT]O’Reilly[FONT="] را وارد کند کد [/FONT]SQL[FONT="] به صورت زير خواهد شد :[/FONT]
[FONT="] [/FONT]
SELECT author,title,year FROM books WHERE publisher = ‘O’Reilly’[FONT="][/FONT][FONT="] [/FONT]
[FONT="] [/FONT]
[FONT="]که در اين صورت به دليل اينکه مفسرعلامت [/FONT]single quotation[FONT="] داخل کلمه [/FONT]O’Reilly[FONT="] را به عنوان [/FONT]quotation[FONT="] بسته عبارت مقابل [/FONT]publisher[FONT="] فرض میکند و می بيند که بعد از آن عبارت بی معنای [/FONT]Reilly[FONT="] و سپس [/FONT]quotation[FONT="] بازی است که بسته نشده [/FONT]error [FONT="] زير را نمايش می دهد :[/FONT]
[FONT="] [/FONT]
Incorrect syntax near ‘Reilly’.
Server: Msg 105, Level 15, State 1, Line 1
Unclosed quotation mark before the character string ‘[FONT="][/FONT]
[FONT="] [/FONT]
Incorrect syntax near ‘Reilly’.
Server: Msg 105, Level 15, State 1, Line 1
Unclosed quotation mark before the character string ‘[FONT="][/FONT]
[FONT="] [/FONT]
[FONT="] [/FONT]
[FONT="]اين عبارت به ما نشان میدهد که برنامه مورد نظر نسبت به حمله [/FONT]SQL injection[FONT="] آسيب پذير است.[/FONT]
[FONT="]حال اگر به جای عبارت [/FONT]O’Reilly[FONT="] عبارت [/FONT]wiley’ OR 1=1 --[FONT="] را وارد کنيم دستور [/FONT]SQL[FONT="] بالا به فرم زير خواهد شد :[/FONT]
[FONT="] [/FONT]
SELECT author,title,year FROM books WHERE publisher =’Wiley’ OR 1=1 -- ‘
[FONT="]با اجرای اين دستور چون همواره عبارت مقابل [/FONT]WHERE[FONT="] درست است به دليل اينکه هميشه [/FONT]1=1[FONT="] است اين دستور تمام سطرهای [/FONT]table[FONT="] مورد نظر را برای کاربر باز می گرداند.[/FONT]
بعداً در مورد اين نوع حمله بيشتر براتون می نويسم، کسی هم اگه در اين مورد اطلاعات يا کتابی در اختيار داره، خوشحال می شم اگه معرفی کنه.
[FONT="][/FONT]
بعداً در مورد اين نوع حمله بيشتر براتون می نويسم، کسی هم اگه در اين مورد اطلاعات يا کتابی در اختيار داره، خوشحال می شم اگه معرفی کنه.
[FONT="][/FONT]