SQL Injection kya Hota hai-
SQL Injection Example – जब हम किसी HTML Page पर User Form के माध्यम से User Data Accept करते हैं, तब User, HTML Form में सामान्य Data Insert करने के स्थान पर कई बार ऐसा Data Insert देता है, जिसे Check किए बिना यदि Directly Server Side Script द्वारा Use कर लिया जाए, तो पूरा Database Corrupt हो जाने, किसी Table के Delete हो जाने, Blog/Site के Hack हो जाने अथवा Blog/Site के Database में Stored Security Related Sensitive Data के Leak हो जाने की सम्भावना रहती है, जिनका User द्वारा गलत तरीके से उपयोग किया जा सकता है।
जब User किसी Site/Blog को इस तरह से नुकसान पहुंचाने के लिए अथवा Database के Sensitive Section में Enter करने के लिए HTML Form पर Normal Data के स्थान पर किसी SQL Query को Specify करता है, तो इस तरीके को SQL Injection Attack कहा जाता है और हम Web Developer को अपनी Site/Blog को SQL Injection Attack से बचाने के लिए सभी सम्भव Precautions को Use करना जरूरी होता है।
चलिए, सबसे पहले हम इस SQL Injection Attack को ही ठीक से समझने की कोशिश करते हैं।. Kisi Bhi Website Me Generally 3 Parts Hote Hain
- Presentation Layer Ya Website Ka Design
- Business Logic Layer Ya Website Ka Server Side Logic
- Data Layer Ya Website Ka Databas
Database Ka Use Kya Hai
SQL (Structured Query Language) Ek Language Hai Jiski Help Se Hum Kisi Bhi Database Ko Manage Karte Hain. Database Jaise Ki Mysql , Oracle, Micro Soft SQL Ya Dbase Me Hamari Website Ki Jankariya Surakshit Rahti Hain
Aap Ki Website Ki Wo Jankariya Jinhe Future Me Change Karne Ki Zarurat Pade Unhe Aap Database Me Rakh Sakte Hai. Agar Aap Website Me Registration Ka Module Dete Hain Hai To Users Ki Sari Information Database Me Hi Store Karni Chahiye. Ye Database Kisi Bhi Company Ka Ho Sakta Hai Jaise Oracle, Mysql, MS SQL. Example : Facebook Me Registration Karne Se Aap Ki Information Facebook Ke Database Server Me Store Ho Jayengei.
Aap Ki Website Ki Wo Jankariya Jinhe Future Me Change Karne Ki Zarurat Pade Unhe Aap Database Me Rakh Sakte Hai. Agar Aap Website Me Registration Ka Module Dete Hain Hai To Users Ki Sari Information Database Me Hi Store Karni Chahiye. Ye Database Kisi Bhi Company Ka Ho Sakta Hai Jaise Oracle, Mysql, MS SQL. Example : Facebook Me Registration Karne Se Aap Ki Information Facebook Ke Database Server Me Store Ho Jayengei.
Database Me Store Data Ko Website Pe Kaise Dikhate Hain
Ab Aapne Apne Website Ki Zaruri Information Ko Database Me Store Karne Start Kar Diya. Magar Ye Database To Users Ko Dikhenge Nahi . To Sawal Ye Hai Ki Database Me Rakhi Information Ko User Ko Website Par Kaise Dikkhaya Jaaye. Is Kaam Ko Karne Ke Liye Server Side Logic Ka Prayog Hota Hai Jaise Ki PHP, ASP.NET, JSP. In Languages Ki Help Se Hum Database Me Rakhe Data Ko User Ko Show Kar Sakte Hain. In Language Me Jahan Bhi Zarurat Ho Database Connectivity Ka Program Likh Sakte Hain.Database Connectivity Ke Code Ke Tahat PHP Ya JSP Me SQL (Structured Query Language) Ke Code Likhe Jaate Hain Jo Ki Zarurat Par Database Me Jaake Hi Execute Hote Hain.
Example :मान लीजिये कि आप किसी भी साइट में रजिस्ट्रेशन के बाद लॉगिन करने जाते हैं । लॉगिन करते वक़्तआपकोअपना User Id और Password वेबसाइट के लॉगिन फॉर्म में उपलब्ध करना पड़ता है । वही लॉगिन औरपासवर्ड सर्वरके पास पहुचता है और जिसे सर्वर PHPया JSP कोड की मदद से SQL का इस्तेमाल करके डेटाबेस मेंभेजता है औरडेटाबेस उस यूजर की लॉगिन और पासवर्ड को चेक करके वापस वेब सर्वर को बताता है कि यूजर लॉगिनऔर पासवर्डसही था या नहीं
“फिर से बता दे कि आपके यूजर लॉगिन और पासवर्ड की सूचना डेटाबेस में ही रखी होती है जिसे आप Server Side Logic(PHP,JSP,ASP) के माध्यम से चेक या देख पाते हैं “
“फिर से बता दे कि आपके यूजर लॉगिन और पासवर्ड की सूचना डेटाबेस में ही रखी होती है जिसे आप Server Side Logic(PHP,JSP,ASP) के माध्यम से चेक या देख पाते हैं “
SQL Injection Kya Hota Hai
SQL Aur Database Ka Upyog Jaanne Ke Baad Aayiye Dekhte Hain Ki SQL Injection Kya Hota Hai.
चलिए, सबसे First Of All हम इस SQL Injection Attack को ठीक से समझने की कोशिश करते हैं।
मान लीजिए कि हमारी Web Site में एक Login Webpage है, जिस पर User Id व Password Enter करके कोई भी Valid User हमारी Website के Secure Area में पहुंच सकता है।
जब User इस Form पर Login करने के लिए अपना Username व Password Enter करके Login Form को Submit करता है, तो Web Server पर उस HTML User Form के Username व Password को Extract ya Receive किया जाता है और इस Username व Password को Back End(Server Side Logic) में MySQL Database पर निम्नानुसार एक Query में Use करके इस बात का पता लगाया जाता है, कि ye Username व Password किसी Valid Authenticated User का Username Password है या नहीं.
SELECT * FROM usertable WHERE username = ‘$input_user’ AND password = ‘$input_pass’;
Website Kaishe banaye
यदि उपरोक्त Query ke Fire होने पर कोई Record milta है, तो इसका मतलब ये है कि Specified Username व Password Database में Available हैं। यानी Specified Username/Password वाले User को Website के Secure Area में Redirect किया जा सकता है।
यदि उपरोक्त Query Fire होने से पहले User Form द्वारा आने वाले Username व Password को Sanitize किया जाता है, तब तो ठीक है। लेकिन यदि User Form द्वारा आने वाले Username व Password को Sanitize नहीं किया जाए तो User अपने HTML Form पर Username के रूप में “ali’ OR 1=1 —” व Password के रूप में “ali” Insert करके Form को Submit कर सकता है और यदि User ऐसा करता है, तो उपरोक्तानुसार Fire होने वाली SSQL Query वास्तव में निम्नानुसार Format में Fire होगी%
SELECT * FROM usertable WHERE username = ‘ali’ OR 1=1; — AND password = ‘anything’;
जब उपरोक्त Query Execute होगा, तो ये Query User को Website के Secure ।तमं में पहुंचा देगा जबकि Useत ने Username व Password के रूप में कोई Valid Information Specify नहीं किया है।
ऐसा इसलिए होता है क्योंकि MySQL व अन्य कई Databases में “—” को Comment के लिए Use किया जाता है। यानी “—” के बाद जो कुछ भी लिखा होता है, MySQL उसे Ignore कर देता है।
जबकि उपरोक्त Query में Username के “ali’ OR 1=1;” Specify करने का मतलब MySQL Database के लिए ये है कि या तो username = ‘ali’ हो या फिर 1=1 यानी True हो।
अब यदि Current Database में ‘ali’ नाम का User होगा, तब भी Condition True हो जाएगी और यदि Current Database में ‘ali’ नाम का User नहीं होगा, तो OR 1=1 Statement Execute होगा, जो कि True ही Return करेगा क्योंकि 1 हमेंशा 1 के बराबर होता है। इतना ही नहीं, 1=1 के Just बाद में “—“ Specify करके User ने आगे की पूरी SQL Query को एक Comment में Convert कर दिया है।
https://ilsaparry.blogspot.com/2009/08/local-plastic-injection-moulding.html?showComment=1590657600715#c8458924574666736960
ReplyDeletenice bLog! its interesting. thank you for sharing.... co injection molding
ReplyDelete