როგორ ავიცილოთ თავიდან SQL ინექცია PHP– ში (სურათებით)

Სარჩევი:

როგორ ავიცილოთ თავიდან SQL ინექცია PHP– ში (სურათებით)
როგორ ავიცილოთ თავიდან SQL ინექცია PHP– ში (სურათებით)

ვიდეო: როგორ ავიცილოთ თავიდან SQL ინექცია PHP– ში (სურათებით)

ვიდეო: როგორ ავიცილოთ თავიდან SQL ინექცია PHP– ში (სურათებით)
ვიდეო: როგორ დავაკარგვინე გოგოს ქალიშვილობა- პირადი ისტორია.#2 2024, მაისი
Anonim

ეს wikiHow გასწავლით თუ როგორ უნდა აიცილოთ თავიდან SQL ინექცია PHP– ში მომზადებული განცხადებების გამოყენებით. SQL ინექცია დღეს ერთ - ერთი ყველაზე გავრცელებული დაუცველობაა ვებ პროგრამებში. მომზადებული განცხადებები იყენებს შეკრული პარამეტრებს და არ აერთიანებს ცვლადებს SQL სტრიქონებთან, რის გამოც თავდამსხმელისთვის შეუძლებელია SQL განცხადების შეცვლა.

მომზადებული განცხადებები აერთიანებს ცვლადს შედგენილ SQL განცხადებასთან, ისე რომ SQL და ცვლადები იგზავნება ცალკე. ცვლადები შემდეგ განიმარტება როგორც უბრალო სტრიქონები და არა SQL განცხადების ნაწილი. ქვემოთ მოყვანილი ნაბიჯების მეთოდების გამოყენებით, თქვენ არ დაგჭირდებათ SQL ინექციის გაფილტვრის სხვა ტექნიკის გამოყენება, როგორიცაა mysql_real_escape_string ().

ნაბიჯები

მე –2 ნაწილი 1: SQL ინექციის გაგება

ნაბიჯი 1. SQL ინექცია არის დაუცველობის ტიპი იმ პროგრამებში, რომლებიც იყენებენ SQL მონაცემთა ბაზას

დაუცველობა წარმოიქმნება, როდესაც მომხმარებლის შეყვანა გამოიყენება SQL განცხადებაში:

$ name = $ _GET ['მომხმარებლის სახელი']; $ query = "აირჩიეთ პაროლი tbl_user WHERE name = '$ name'";

ნაბიჯი 2. მომხმარებლის მიერ მომხმარებლის ცვლადი მომხმარებლის სახელის მნიშვნელობა გადაეცემა ცვლადის $ სახელს

შემდეგ ის მოთავსებულია უშუალოდ SQL განცხადებაში, რაც მომხმარებელს შესაძლებელს ხდის შეცვალოს SQL განცხადება.

$ name = "ადმინისტრატორი ან 1 = 1 -"; $ query = "აირჩიეთ პაროლი tbl_user WHERE name = '$ name'";

ნაბიჯი 3. SQL მონაცემთა ბაზა მიიღებს SQL განცხადებას შემდეგნაირად:

აირჩიეთ პაროლი tbl_users WHERE name = 'admin' OR 1 = 1 - '

  • ეს არის მოქმედი SQL, მაგრამ მომხმარებლისთვის ერთი პაროლის დაბრუნების ნაცვლად, განცხადება დააბრუნებს tbl_user ცხრილში არსებულ ყველა პაროლს. ეს არ არის ის, რაც გსურთ თქვენს ვებ პროგრამებში.

    ნაწილი 2 2: mySQLi გამოყენება მომზადებული განცხადებების შესაქმნელად

    2542820 1
    2542820 1

    ნაბიჯი 1. შექმენით mySQLi SELECT მოთხოვნა

    გამოიყენეთ ქვემოთ მოყვანილი კოდი, რათა შეარჩიოთ მონაცემები ცხრილიდან mySQLi მომზადებული განცხადებების გამოყენებით.

    $ name = $ _GET ['მომხმარებლის სახელი']; if ($ stmt = $ mysqli-> მომზადება ("პაროლის არჩევა tbl_users WHERE name =?")) {// შეაერთეთ ცვლადი პარამეტრზე, როგორც სტრიქონი. $ stmt-> bind_param ("s", $ name); // განაცხადის შესრულება. $ stmt-> შესრულება (); // მიიღეთ ცვლადები მოთხოვნიდან. $ stmt-> bind_result ($ pass); // მონაცემების ამოღება. $ stmt-> მოტანა (); // მონაცემების ჩვენება. printf ("მომხმარებლის %s პაროლი არის %s / n", $ name, $ pass); // დახურეთ მომზადებული განცხადება. $ stmt-> დახურვა (); }

    შენიშვნა: ცვლადი $ mysqli არის mySQLi კავშირის ობიექტი

    2542820 2
    2542820 2

    ნაბიჯი 2. შექმენით mySQLi INSERT მოთხოვნა

    გამოიყენეთ ქვემოთ მოცემული კოდი მონაცემების ცხრილში ჩასასმელად mySQLi მომზადებული განცხადებების გამოყენებით.

    $ name = $ _GET ['მომხმარებლის სახელი']; $ პაროლი = $ _GET ['პაროლი']; if ($ stmt = $ mysqli-> მომზადება ("ჩაწერე tbl_users (სახელი, პაროლი) VALUES (?,?)")) {// ცვლადების დაკავშირება პარამეტრზე, როგორც სტრიქონი. $ stmt-> bind_param ("ss", $ name, $ პაროლი); // განაცხადის შესრულება. $ stmt-> შესრულება (); // დახურეთ მომზადებული განცხადება. $ stmt-> დახურვა (); }

    შენიშვნა: ცვლადი $ mysqli არის mySQLi კავშირის ობიექტი

    2542820 3
    2542820 3

    ნაბიჯი 3. შექმენით mySQLi UPDATE მოთხოვნა

    გამოიყენეთ ქვემოთ მოცემული კოდი ცხრილში მონაცემების განახლებისთვის mySQLi მომზადებული განცხადებების გამოყენებით.

    $ name = $ _GET ['მომხმარებლის სახელი']; $ პაროლი = $ _GET ['პაროლი']; if ($ stmt = $ mysqli-> მომზადება ("Ubdate tbl_users SET password =? WHERE name =?")) {// შეაერთეთ ცვლადები პარამეტრზე, როგორც სტრიქონი. $ stmt-> bind_param ("ss", $ პაროლი, $ name); // განაცხადის შესრულება. $ stmt-> შესრულება (); // დახურეთ მომზადებული განცხადება. $ stmt-> დახურვა (); }

    შენიშვნა: ცვლადი $ mysqli არის mySQLi კავშირის ობიექტი

    2542820 4
    2542820 4

    ნაბიჯი 4. შექმენით mySQLi DELETE მოთხოვნა

    ქვემოთ მოყვანილი სკრიპტი არის თუ როგორ უნდა წაშალოთ მონაცემები ცხრილიდან mySQLi მომზადებული განცხადებების გამოყენებით.

    $ name = $ _GET ['მომხმარებლის სახელი']; $ პაროლი = $ _GET ['პაროლი']; if ($ stmt = $ mysqli-> მომზადება ("წაშლა tbl_users WHERE name =?")) {// ცვლადის დაკავშირება პარამეტრზე, როგორც სტრიქონი. $ stmt-> bind_param ("s", $ name); // განაცხადის შესრულება. $ stmt-> შესრულება (); // დახურეთ მომზადებული განცხადება. $ stmt-> დახურვა (); }

გირჩევთ: