SQL injection چیست:

niloofarf

عضو جدید
سلام دوستان، امروز اينجا در مورد يکی از قديمی ترين و خطرناک ترين حمله ها به وب سرور ها براتون می نويسم که حملهای به نام SQL injection است.


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

[FONT=&quot]با اجرای اين دستور چون همواره عبارت مقابل [/FONT]WHERE[FONT=&quot] درست است به دليل اينکه هميشه [/FONT]1=1[FONT=&quot] است اين دستور تمام سطرهای [/FONT]table[FONT=&quot] مورد نظر را برای کاربر باز می گرداند.[/FONT]


بعداً در مورد اين نوع حمله بيشتر براتون می نويسم، کسی هم اگه در اين مورد اطلاعات يا کتابی در اختيار داره، خوشحال می شم اگه معرفی کنه.:gol:
[FONT=&quot][/FONT]​
 

niloofarf

عضو جدید
بچه ها چون وقتی مطالب را کپی کردم متن کمی به هم ريخته، من فايل word آن را براتون گذاشتم.:biggrin:
 

niloofarf

عضو جدید
بچه ها چون وقتی مطالب را کپی کردم متن کمی به هم ريخته، من فايل word آن را براتون گذاشتم
 

پیوست ها

  • SQL injection.doc
    30 کیلوبایت · بازدیدها: 0
بالا