რა არის SQL ინექცია?

ვებ დაუცველობის ერთ-ერთი ყველაზე დიდი კლასი ცნობილია როგორც "SQL Injection", ან SQLi. სტრუქტურირებული შეკითხვის ენა, aka SQL, არის ენა, რომელიც გამოიყენება მონაცემთა ბაზების უმეტესობასთან ურთიერთქმედებისთვის, თუმცა მონაცემთა ბაზის მიხედვით გამოიყენება ენის რამდენიმე ვარიანტი პლატფორმა. ნებისმიერი ვებსაიტი, რომელიც ინახავს მომხმარებლის მონაცემებს, როგორიცაა ანგარიშის ინფორმაცია, ან უზრუნველყოფს მომხმარებლის ატვირთვის ფუნქციას, როგორიცაა სურათების ჰოსტინგის ვებსაიტი, გამოიყენებს მონაცემთა ბაზას ამ მონაცემების შესანახად.

რჩევა: SQL ჩვეულებრივ გამოითქმის „ess cue ell“ ან „sequel“, პირველი ვარიანტი უფრო გავრცელებულია ბრიტანულ ინგლისურში და მეორე უფრო გავრცელებული ამერიკულ ინგლისურში. ორივე გამოთქმა ზოგადად გასაგებია მონაცემთა ბაზებზე საუბრის კონტექსტში.

რა არის SQLi?

SQLi არის დაუცველობა, სადაც ვებ დეველოპერები, რომლებიც ქმნიან კოდს, რომელიც ურთიერთობს მათ შორის ვებსერვერი და მონაცემთა ბაზა არ ახორციელებენ დაცვას SQL ბრძანებებისგან, რომლებიც წარმოდგენილია ა მომხმარებელი. პრობლემა ის არის, რომ შესაძლებელია მონაცემთა ბაზის განცხადებებიდან თავის დაღწევა და ახალი არგუმენტების ან სრულიად ახალი განცხადების დამატება. მონაცემთა ბაზის შეცვლილ ან მეორე განცხადებას შეუძლია შეასრულოს მთელი რიგი მოქმედებები, მათ შორის პოტენციურად ფართომასშტაბიანი წაშლა ან მონაცემთა გაჟონვა.

ექსპლოიტები, როგორც წესი, ტრიალებს იმის გარშემო, რომ არსებული განცხადებები იყოს ჭეშმარიტი ყველა ვითარებაში ან უზრუნველყონ მეორე ჯგუფური ბრძანება, რომელიც ასრულებს კონკრეტულ მოქმედებას, როგორიცაა ყველა მონაცემის წაშლა ან ჩვენება. მაგალითად, SQL განცხადება ვებსაიტზე შესასვლელად შეიძლება შეამოწმოს, ემთხვევა თუ არა წარმოდგენილი მომხმარებლის სახელი და პაროლი მონაცემთა ბაზაში ჩანაწერს. SQL ინექციის ექსპლოიტზე წვდომის მცდელობისთვის შეიძლება სცადოთ დაამატოთ „ან ჭეშმარიტი“ პუნქტი, როგორიცაა „ან 1=1“. ეს გახდის ბრძანებას "შედით [ამ] მომხმარებლის სახელით, თუ პაროლი არის [ეს], ან ეს განცხადება მართალია".

როგორ ავიცილოთ თავიდან SQLi

SQLi იყო ძალიან გავრცელებული გზა ვებსაიტების მონაცემთა ბაზის გარღვევისა და შემდეგ ინტერნეტში გაჟონვისთვის. შეთანხმებული ძალისხმევის გამო, რომ უსაფრთხოების ინფორმირებულობა იყოს დეველოპერების ტრენინგის ნაწილი, დაუცველობის ეს კლასი დიდწილად მოგვარდა და უკვე იშვიათად ჩანს.

SQLi-ს თავიდან აცილების სწორი მეთოდი არის მომზადებული განცხადებების გამოყენება, რომლებიც ასევე ცნობილია როგორც პარამეტრირებული მოთხოვნები. ტრადიციულად, SQL განცხადებები დეკლარირებულია და მომხმარებლის მიერ შეყვანილი მათში შეყვანილია ამ დეკლარაციის დროს. მომზადებული განცხადებებით, მონაცემთა ბაზის ბრძანება იწერება და შემდეგ sperate ფუნქცია აწარმოებს ბრძანებას და ჩასვამს მომხმარებლის მონაცემებს. მიუხედავად იმისა, რომ ეს შეიძლება ჩანდეს როგორც უმნიშვნელო განსხვავება, ის მთლიანად ცვლის ბრძანების დამუშავებას. განსხვავება ხელს უშლის რაიმე მნიშვნელოვანი SQL ბრძანების გაშვებას და განიხილავს მომხმარებლის ყველა შეყვანას, როგორც სტრიქონს, რაც ხელს უშლის SQL ინექციის განხორციელებას.