Trong bài viết này, chúng ta sẽ thảo luận về cách ngăn chặn SQL injection trong PHP. Điều kiện tiên quyết của chủ đề này là bạn đang có XAMPP trong máy tính của mình
Tại sao SQL injection xảy ra?
SQL injection là một kỹ thuật tiêm mã được sử dụng để tấn công các ứng dụng dựa trên dữ liệu, trong đó các câu lệnh SQL độc hại được chèn vào một trường nhập để thực thi [e. g. để đổ nội dung cơ sở dữ liệu cho kẻ tấn công]
Trong loại kỹ thuật này, tin tặc hoặc kẻ tấn công sử dụng một số ký tự đặc biệt để chuyển đổi truy vấn SQL thành truy vấn SQL mới và kẻ tấn công có thể thao túng truy vấn bằng cách nhập nhiều loại từ khóa hơn
Hãy để chúng tôi tạo một kịch bản SQL injection sau đó chúng ta sẽ tìm hiểu cách khắc phục nó
Bước 1. Vì vậy, hãy bắt đầu bằng cách tạo cơ sở dữ liệu –
CREATE DATABASE GFG;
Bước 2. Sử dụng cơ sở dữ liệu này –
USE GFG;
Bước 3. Tạo bảng thông tin đăng nhập trong cơ sở dữ liệu GFG –
CREATE TABLE users[ id int[10] PRIMARY KEY AUTO_INCREMENT, username VARCHAR[255], password VARCHAR[255] ];
Bước 4. Chèn một số dữ liệu vào cơ sở dữ liệu –
INSERT INTO users VALUES[1, 'idevesh', '1234']; INSERT INTO users VALUES[2, 'geeksforgeeks', 'gfg'];
Dữ liệu Sau khi chèn
Bước 5. Bây giờ hãy tạo tập lệnh PHP cho trang đăng nhập –
[a] Tạo một tệp kết nối DB [dbconnection. php] –
PHP
USE GFG;04
USE GFG;05
USE GFG;06
USE GFG;07
USE GFG;08
USE GFG;0
USE GFG;1
USE GFG;0
USE GFG;3
USE GFG;0
USE GFG;5
USE GFG;6
USE GFG;05
USE GFG;8
USE GFG;9
CREATE TABLE users[ id int[10] PRIMARY KEY AUTO_INCREMENT, username VARCHAR[255], password VARCHAR[255] ];0
CREATE TABLE users[ id int[10] PRIMARY KEY AUTO_INCREMENT, username VARCHAR[255], password VARCHAR[255] ];1
CREATE TABLE users[ id int[10] PRIMARY KEY AUTO_INCREMENT, username VARCHAR[255], password VARCHAR[255] ];2
CREATE TABLE users[ id int[10] PRIMARY KEY AUTO_INCREMENT, username VARCHAR[255], password VARCHAR[255] ];3____24
CREATE TABLE users[ id int[10] PRIMARY KEY AUTO_INCREMENT, username VARCHAR[255], password VARCHAR[255] ];5
CREATE TABLE users[ id int[10] PRIMARY KEY AUTO_INCREMENT, username VARCHAR[255], password VARCHAR[255] ];6
[b] Tạo biểu mẫu HTML để nhập từ NGƯỜI DÙNG –
PHP
CREATE TABLE users[ id int[10] PRIMARY KEY AUTO_INCREMENT, username VARCHAR[255], password VARCHAR[255] ];7
CREATE TABLE users[ id int[10] PRIMARY KEY AUTO_INCREMENT, username VARCHAR[255], password VARCHAR[255] ];8
USE GFG;05
INSERT INTO users VALUES[1, 'idevesh', '1234']; INSERT INTO users VALUES[2, 'geeksforgeeks', 'gfg'];0
CREATE TABLE users[ id int[10] PRIMARY KEY AUTO_INCREMENT, username VARCHAR[255], password VARCHAR[255] ];0
INSERT INTO users VALUES[1, 'idevesh', '1234']; INSERT INTO users VALUES[2, 'geeksforgeeks', 'gfg'];2
CREATE TABLE users[ id int[10] PRIMARY KEY AUTO_INCREMENT, username VARCHAR[255], password VARCHAR[255] ];0
INSERT INTO users VALUES[1, 'idevesh', '1234']; INSERT INTO users VALUES[2, 'geeksforgeeks', 'gfg'];4
INSERT INTO users VALUES[1, 'idevesh', '1234']; INSERT INTO users VALUES[2, 'geeksforgeeks', 'gfg'];5
INSERT INTO users VALUES[1, 'idevesh', '1234']; INSERT INTO users VALUES[2, 'geeksforgeeks', 'gfg'];6
INSERT INTO users VALUES[1, 'idevesh', '1234']; INSERT INTO users VALUES[2, 'geeksforgeeks', 'gfg'];7
CREATE TABLE users[ id int[10] PRIMARY KEY AUTO_INCREMENT, username VARCHAR[255], password VARCHAR[255] ];3______39
INSERT INTO users VALUES[1, 'idevesh', '1234']; INSERT INTO users VALUES[2, 'geeksforgeeks', 'gfg'];20____321
INSERT INTO users VALUES[1, 'idevesh', '1234']; INSERT INTO users VALUES[2, 'geeksforgeeks', 'gfg'];22
USE GFG;05
INSERT INTO users VALUES[1, 'idevesh', '1234']; INSERT INTO users VALUES[2, 'geeksforgeeks', 'gfg'];24
CREATE TABLE users[ id int[10] PRIMARY KEY AUTO_INCREMENT, username VARCHAR[255], password VARCHAR[255] ];0____326
INSERT INTO users VALUES[1, 'idevesh', '1234']; INSERT INTO users VALUES[2, 'geeksforgeeks', 'gfg'];27
INSERT INTO users VALUES[1, 'idevesh', '1234']; INSERT INTO users VALUES[2, 'geeksforgeeks', 'gfg'];21
CREATE TABLE users[ id int[10] PRIMARY KEY AUTO_INCREMENT, username VARCHAR[255], password VARCHAR[255] ];3____1040
CREATE TABLE users[ id int[10] PRIMARY KEY AUTO_INCREMENT, username VARCHAR[255], password VARCHAR[255] ];3____1042
INSERT INTO users VALUES[1, 'idevesh', '1234']; INSERT INTO users VALUES[2, 'geeksforgeeks', 'gfg'];27
USE GFG;044
USE GFG;045
USE GFG;046
USE GFG;047
USE GFG;048
INSERT INTO users VALUES[1, 'idevesh', '1234']; INSERT INTO users VALUES[2, 'geeksforgeeks', 'gfg'];21
USE GFG;05
USE GFG;044
USE GFG;052
USE GFG;053
USE GFG;054
USE GFG;053
USE GFG;056
USE GFG;057
USE GFG;058
USE GFG;059
USE GFG;060
USE GFG;061____1062
USE GFG;063
USE GFG;044
USE GFG;065
USE GFG;05
USE GFG;044
USE GFG;052
USE GFG;053
USE GFG;070
USE GFG;053
USE GFG;056
USE GFG;057
USE GFG;058
USE GFG;075
USE GFG;060
USE GFG;061____1078
USE GFG;063
USE GFG;044
USE GFG;065
USE GFG;05
USE GFG;044
USE GFG;052
USE GFG;053
USE GFG;056
USE GFG;087
USE GFG;060
USE GFG;058
USE GFG;00
USE GFG;01
USE GFG;02
USE GFG;063
USE GFG;044
USE GFG;065
CREATE TABLE users[ id int[10] PRIMARY KEY AUTO_INCREMENT, username VARCHAR[255], password VARCHAR[255] ];3____107
CREATE TABLE users[ id int[10] PRIMARY KEY AUTO_INCREMENT, username VARCHAR[255], password VARCHAR[255] ];0
USE GFG;09
USE GFG;10
USE GFG;05
USE GFG;12
[c] Tạo tệp verifyLogin. php để xác thực đầu vào của người dùng –
PHP
USE GFG;04
USE GFG;05
USE GFG;15
USE GFG;16
USE GFG;17
USE GFG;18
USE GFG;19
USE GFG;20
USE GFG;21
USE GFG;22
USE GFG;23
USE GFG;24
USE GFG;19
USE GFG;20
USE GFG;21
USE GFG;28
USE GFG;23
USE GFG;30
USE GFG;31
USE GFG;32
USE GFG;17
USE GFG;34
USE GFG;35
USE GFG;06
USE GFG;0
USE GFG;30
USE GFG;39
USE GFG;40
USE GFG;41
USE GFG;42
USE GFG;06
USE GFG;44
USE GFG;45
USE GFG;46
USE GFG;34
USE GFG;6
USE GFG;49
USE GFG;8
USE GFG;51
USE GFG;45
USE GFG;53
CREATE TABLE users[ id int[10] PRIMARY KEY AUTO_INCREMENT, username VARCHAR[255], password VARCHAR[255] ];0
CREATE TABLE users[ id int[10] PRIMARY KEY AUTO_INCREMENT, username VARCHAR[255], password VARCHAR[255] ];1
USE GFG;56
USE GFG;17
CREATE TABLE users[ id int[10] PRIMARY KEY AUTO_INCREMENT, username VARCHAR[255], password VARCHAR[255] ];5
USE GFG;59
USE GFG;60
CREATE TABLE users[ id int[10] PRIMARY KEY AUTO_INCREMENT, username VARCHAR[255], password VARCHAR[255] ];0
CREATE TABLE users[ id int[10] PRIMARY KEY AUTO_INCREMENT, username VARCHAR[255], password VARCHAR[255] ];1
USE GFG;63____117
CREATE TABLE users[ id int[10] PRIMARY KEY AUTO_INCREMENT, username VARCHAR[255], password VARCHAR[255] ];5
CREATE TABLE users[ id int[10] PRIMARY KEY AUTO_INCREMENT, username VARCHAR[255], password VARCHAR[255] ];6
Bước 6. Bây giờ chúng tôi sẽ chuyển một mật khẩu bị nhiễm độc để truy cập vào hồ sơ người dùng –
INSERT INTO users VALUES[1, 'idevesh', '1234']; INSERT INTO users VALUES[2, 'geeksforgeeks', 'gfg'];2
https. //phương tiện truyền thông. chuyên viên máy tính. org/wp-content/uploads/20210513172141/sql Tiêm. mp4
Vì vậy, như bạn có thể thấy chuỗi bị nhiễm độc nói trên có thể khiến bất kỳ người dùng nào đăng nhập bằng tên người dùng geeksforgeeks, vì vậy đây được gọi là SQL Injection
Bây giờ để tránh kiểu tiêm SQL này, chúng ta cần làm sạch đầu vào mật khẩu và đầu vào tên người dùng bằng hàm mysqli_real_escape_string[]
Hàm mysqli_real_escape_string[] lấy các ký tự đặc biệt như chúng là đầu vào từ người dùng và không coi chúng là cách sử dụng truy vấn