Phòng chống tiêm nhiễm PHP

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

Các kỹ thuật tốt nhất có thể để ngăn chặn các cuộc tấn công tiêm chích là gì?

8 Phương pháp hay nhất để ngăn chặn các cuộc tấn công chèn SQL .
Không dựa vào xác thực đầu vào phía máy khách
Sử dụng người dùng cơ sở dữ liệu với các đặc quyền bị hạn chế
Sử dụng các câu lệnh đã chuẩn bị và tham số hóa truy vấn
Quét mã của bạn để tìm các lỗ hổng SQL injection
Sử dụng một lớp ORM
Đừng dựa vào danh sách chặn
Thực hiện xác thực đầu vào

Phương pháp ưa thích để ngăn chặn SQL injection PHP là gì?

Để ngăn chặn lỗ hổng SQL Injection trong PHP, hãy sử dụng Đối tượng dữ liệu PHP [PDO] để tạo truy vấn tham số hóa [câu lệnh đã chuẩn bị]. .
Bước 1. Xác thực đầu vào. .
Bước 2. Chuẩn bị một truy vấn. .
Bước 3. Tạo câu lệnh đã chuẩn bị. .
Bước 4. Liên kết các tham số với câu lệnh đã chuẩn bị. .
Bước 5. Thực hiện truy vấn của bạn. .
Bước 6. Lấy kết quả

Các tệp PHP an toàn như thế nào để ngăn chặn các cuộc tấn công SQL injection?

PHP có chức năng được thiết kế đặc biệt để ngăn chặn các cuộc tấn công này . Tất cả những gì bạn cần làm là sử dụng hàm mysql_real_escape_string. mysql_real_escape_string lấy một chuỗi sẽ được sử dụng trong truy vấn MySQL và trả về cùng một chuỗi với tất cả các lần thử SQL injection đã thoát một cách an toàn.

Có thể tiêm PHP không?

PHP Object Injection là một lỗ hổng cấp ứng dụng có thể cho phép kẻ tấn công thực hiện các loại tấn công độc hại khác nhau, chẳng hạn như Code Injection, SQL Injection, Path Traversal và Application Denial of Service, tùy thuộc vào ngữ cảnh.

Chủ Đề