Việc vệ sinh có bắt buộc trong PHP không?

Làm sạch đầu vào của người dùng là một phần quan trọng của quá trình phát triển phần mềm. Việc tin tưởng hoặc bỏ qua việc làm sạch đầu vào của người dùng có thể dẫn đến việc truy cập trái phép vào nội dung ứng dụng của bạn, chủ yếu là dữ liệu người dùng hoặc thậm chí cả máy chủ mà ứng dụng của bạn được lưu trữ trên đó

Việc vệ sinh có bắt buộc trong PHP không?

Hình ảnh đầy đủ trên XKCD

Có thể đạt được nội dung vệ sinh bằng cách sử dụng các lớp và

Bộ lọcNhà máy

Thành phần này tạo một bộ định vị mới với các bộ lọc được xác định trước được gắn vào nó. Mỗi bộ lọc được tải chậm để có hiệu suất tối đa. Để khởi tạo nhà máy và truy xuất nhà máy bằng chất khử trùng đặt trước, bạn cần gọi số

Alpha( mixed $input ): string | array
4

newInstance();

Bây giờ bạn có thể sử dụng công cụ định vị bất cứ nơi nào bạn cần và làm sạch nội dung theo nhu cầu của ứng dụng của bạn

Thành phần này triển khai dịch vụ định vị và có thể được sử dụng như một thành phần độc lập mà không cần khởi tạo bộ lọc tích hợp

 HelloSanitizer::class,
];

$locator = new Filter($services);

$text = $locator->hello('World');

GHI CHÚ. Vùng chứa đã có một đối tượng được tải bằng chất khử trùng được xác định trước. Thành phần này có thể được truy cập bằng tên

Alpha( mixed $input ): string | array
5

Được xây dựng trong

GHI CHÚ. Khi thích hợp, chất khử trùng sẽ chuyển giá trị thành loại dự kiến. Ví dụ: trình khử trùng

Alpha( mixed $input ): string | array
6 sẽ xóa tất cả các ký tự không phải là số khỏi đầu vào, chuyển đầu vào thành một số nguyên và trả về giá trị tuyệt đối của nó

Sau đây là các bộ lọc tích hợp được cung cấp bởi thành phần này

Alpha( mixed $input ): string | array
6

Xóa mọi ký tự không phải là số, chuyển giá trị thành số nguyên và trả về giá trị tuyệt đối của nó. Bên trong, nó sử dụng filter_var cho phần nguyên, intval để truyền và absint

Alpha( mixed $input ): string | array
8

Alnum( mixed $input ): string | array

Loại bỏ tất cả các ký tự không phải là số hoặc ký tự của bảng chữ cái. Nó sử dụng preg_replace cũng có thể chấp nhận các mảng chuỗi làm tham số

Alpha( mixed $input ): string | array
9

Alpha( mixed $input ): string | array

Loại bỏ tất cả các ký tự không phải là ký tự của bảng chữ cái. Nó sử dụng preg_replace cũng có thể chấp nhận các mảng chuỗi làm tham số

BoolVal( mixed $input ): bool
0

BoolVal( mixed $input ): bool

Truyền giá trị thành boolean

Nó cũng trả về

BoolVal( mixed $input ): bool
1 nếu giá trị là

Nó cũng trả về

BoolVal( mixed $input ): bool
2 nếu giá trị là

BoolVal( mixed $input ): bool
3

Email( mixed $input ): string

Xóa tất cả các ký tự ngoại trừ chữ cái, chữ số và

BoolVal( mixed $input ): bool
4. Bên trong nó sử dụng filter_var với
BoolVal( mixed $input ): bool
5

BoolVal( mixed $input ): bool
6

FloatVal( mixed $input ): float

Xóa tất cả các ký tự ngoại trừ chữ số, dấu chấm, dấu cộng và dấu trừ và chuyển giá trị dưới dạng

BoolVal( mixed $input ): bool
7. Bên trong nó sử dụng filter_var và
BoolVal( mixed $input ): bool
8

BoolVal( mixed $input ): bool
9

Xóa tất cả các ký tự ngoại trừ chữ số, dấu cộng và dấu trừ và truyền giá trị dưới dạng số nguyên. Bên trong nó sử dụng filter_var và

Email( mixed $input ): string
0

Email( mixed $input ): string
1

Lower( mixed $input ): string

Chuyển đổi tất cả các ký tự thành chữ thường. Nếu phần mở rộng mbstring được tải, nó sẽ sử dụng mb_convert_case để thực hiện chuyển đổi. Là một dự phòng, nó sử dụng hàm strtolower PHP, với utf8_decode

Email( mixed $input ): string
2

LowerFirst( mixed $input ): string

Chuyển đổi ký tự đầu tiên của đầu vào thành chữ thường. Trong nội bộ nó sử dụng lcfirst

Email( mixed $input ): string
3

Regex( mixed $input, mixed $pattern, mixed $replace ): string

Thực hiện thay thế biểu thức chính quy trên đầu vào bằng tham số

Email( mixed $input ): string
4 và tham số
Email( mixed $input ): string
5. Bên trong nó sử dụng preg_replace

Email( mixed $input ): string
6

 HelloSanitizer::class,
];

$locator = new Filter($services);

$text = $locator->hello('World');
0

Thực hiện thay thế trên đầu vào, thay thế tham số

Email( mixed $input ): string
5 bằng một chuỗi trống, loại bỏ nó một cách hiệu quả. Bên trong nó sử dụng str_replace

Email( mixed $input ): string
5

 HelloSanitizer::class,
];

$locator = new Filter($services);

$text = $locator->hello('World');
1

Thực hiện thay thế trên đầu vào dựa trên các tham số đã truyền

Email( mixed $input ): string
9 và
FloatVal( mixed $input ): float
0. Bên trong nó sử dụng str_replace

FloatVal( mixed $input ): float
1

 HelloSanitizer::class,
];

$locator = new Filter($services);

$text = $locator->hello('World');
2

Thoát tất cả các ký tự HTML của đầu vào, cũng như

FloatVal( mixed $input ): float
2 và các ký tự có giá trị ASCII nhỏ hơn 32. Bên trong nó sử dụng filter_var

FloatVal( mixed $input ): float
3

 HelloSanitizer::class,
];

$locator = new Filter($services);

$text = $locator->hello('World');
3

Chuyển đổi tất cả các ký tự đặc biệt của đầu vào thành các thực thể HTML (cả dấu ngoặc kép và dấu ngoặc đơn). Bên trong nó sử dụng filter_var

FloatVal( mixed $input ): float
4

 HelloSanitizer::class,
];

$locator = new Filter($services);

$text = $locator->hello('World');
4

Mã hóa các thực thể HTML. Trong nội bộ, nó sử dụng [htmlspecialchars][htmlspecialchars]

FloatVal( mixed $input ): float
5

 HelloSanitizer::class,
];

$locator = new Filter($services);

$text = $locator->hello('World');
5

Bộ lọc này sẽ chỉ hoạt động đối với các phiên bản PHP thấp hơn 8. 1. Nó có sẵn để tương thích ngược. Bên trong nó sử dụng filter_var

FloatVal( mixed $input ): float
6

 HelloSanitizer::class,
];

$locator = new Filter($services);

$text = $locator->hello('World');
6

Xóa tất cả các thẻ HTML và PHP khỏi đầu vào. Bên trong nó sử dụng strip_tags

FloatVal( mixed $input ): float
7

Xóa tất cả khoảng trắng ở đầu và cuối khỏi đầu vào. Bên trong nó sử dụng trim

FloatVal( mixed $input ): float
8

 HelloSanitizer::class,
];

$locator = new Filter($services);

$text = $locator->hello('World');
7

Chuyển đổi tất cả các ký tự thành chữ hoa. Nếu phần mở rộng mbstring được tải, nó sẽ sử dụng mb_convert_case để thực hiện chuyển đổi. Là một dự phòng, nó sử dụng hàm strtoupper PHP, với utf8_decode

FloatVal( mixed $input ): float
9

 HelloSanitizer::class,
];

$locator = new Filter($services);

$text = $locator->hello('World');
8

Chuyển đổi ký tự đầu tiên của đầu vào thành chữ hoa. Trong nội bộ nó sử dụng ucfirst

Lower( mixed $input ): string
0

 HelloSanitizer::class,
];

$locator = new Filter($services);

$text = $locator->hello('World');
9

Chuyển đổi thành chữ hoa ký tự đầu tiên của mỗi từ từ đầu vào. Bên trong nó sử dụng ucwords

Lower( mixed $input ): string
1

Vệ sinh một URL. Bên trong nó sử dụng filter_var

hằng số

Các hằng số có sẵn và có thể được sử dụng để xác định loại vệ sinh cần thiết

Alnum( mixed $input ): string | array
0

Phương pháp
Lower( mixed $input ): string
2. Do đó, bạn có thể sử dụng bất kỳ bộ lọc nào làm phương pháp trực tiếp trên bộ định vị. Tên của các phương thức giống như tên được định nghĩa bởi các hằng

Alnum( mixed $input ): string | array
1

Alnum( mixed $input ): string | array
2

Vệ sinh dữ liệu

Vệ sinh là quá trình loại bỏ các ký tự cụ thể khỏi một giá trị mà người dùng hoặc ứng dụng không yêu cầu hoặc mong muốn. Bằng cách vệ sinh đầu vào, chúng tôi đảm bảo rằng tính toàn vẹn của ứng dụng sẽ còn nguyên vẹn

Alnum( mixed $input ): string | array
3

Bộ điều khiển

Bạn có thể truy cập đối tượng từ bộ điều khiển của mình khi truy cập dữ liệu đầu vào

Lower( mixed $input ): string
3 hoặc
Lower( mixed $input ): string
4 (thông qua đối tượng yêu cầu). Tham số đầu tiên là tên của biến cần lấy; . Tham số thứ hai cũng có thể là một mảng với bất kỳ số lượng chất khử trùng nào bạn muốn áp dụng

Alnum( mixed $input ): string | array
4

Tham số hành động

Nếu bạn đã sử dụng làm bộ chứa DI của mình, thì nó đã được đăng ký cho bạn với chất khử trùng mặc định. Để truy cập nó, chúng ta có thể sử dụng tên

Alpha( mixed $input ): string | array
5. Nếu bạn không sử dụng vùng chứa, bạn sẽ cần thiết lập dịch vụ trong vùng chứa để có thể truy cập được vùng chứa trong bộ điều khiển của mình

Chúng ta có thể khử trùng các giá trị được truyền vào các hành động của bộ điều khiển như sau

Alnum( mixed $input ): string | array
5

Lọc dữ liệu

Cả bộ lọc và vệ sinh dữ liệu, tùy thuộc vào chất khử trùng được sử dụng. Chẳng hạn, trình khử trùng

FloatVal( mixed $input ): float
7 sẽ xóa tất cả khoảng trắng ở đầu và cuối, giữ nguyên đầu vào còn lại. Mô tả của từng chất khử trùng (xem ) có thể giúp bạn hiểu và sử dụng chất khử trùng theo nhu cầu của bạn

Alnum( mixed $input ): string | array
6

Thêm chất khử trùng

Bạn có thể thêm chất khử trùng của riêng bạn vào. Trình khử trùng có thể là một chức năng ẩn danh khi khởi tạo bộ định vị

Alnum( mixed $input ): string | array
7

Nếu bạn đã có một đối tượng định vị bộ lọc được khởi tạo (ví dụ: nếu bạn đã sử dụng và

Alpha( mixed $input ): string | array
4), thì bạn chỉ cần thêm bộ lọc tùy chỉnh

Alnum( mixed $input ): string | array
8

Hoặc, nếu muốn, bạn có thể triển khai bộ lọc trong một lớp

Alnum( mixed $input ): string | array
9

kết hợp chất khử trùng

Đôi khi một chất khử trùng không đủ cho dữ liệu của bạn. Chẳng hạn, một cách sử dụng rất phổ biến là trình khử trùng

FloatVal( mixed $input ): float
6 và
FloatVal( mixed $input ): float
7 để nhập văn bản. Thành phần này cung cấp khả năng chấp nhận một dãy tên cho chất khử trùng được áp dụng trên giá trị đầu vào. Ví dụ sau minh họa điều này

Alpha( mixed $input ): string | array
0

Lưu ý rằng tính năng này cũng hoạt động trên đối tượng, khi gọi các phương thức lấy dữ liệu từ

Lower( mixed $input ): string
3 và
Lower( mixed $input ): string
4, cụ thể là
LowerFirst( mixed $input ): string
2 và
LowerFirst( mixed $input ): string
3

Alpha( mixed $input ): string | array
1

Chất tẩy rửa tùy chỉnh

Một chất khử trùng tùy chỉnh có thể được thực hiện như một chức năng ẩn danh. Tuy nhiên, nếu bạn thích sử dụng một lớp cho mỗi chất khử trùng, tất cả những gì bạn cần làm là làm cho nó có thể gọi được bằng cách triển khai phương thức với các tham số có liên quan

Vệ sinh trong PHP là gì?

Làm sạch dữ liệu có nghĩa là xóa mọi ký tự không hợp lệ khỏi dữ liệu . Vệ sinh đầu vào của người dùng là một trong những nhiệm vụ phổ biến nhất trong ứng dụng web. Để làm cho nhiệm vụ này dễ dàng hơn, PHP cung cấp tiện ích mở rộng bộ lọc gốc mà bạn có thể sử dụng để làm sạch dữ liệu như địa chỉ e-mail, URL, địa chỉ IP, v.v.

Làm cách nào để khử trùng mã PHP?

Các phương pháp làm sạch đầu vào của người dùng bằng PHP. .
Sử dụng các phiên bản hiện đại của MySQL và PHP
Đặt bộ ký tự một cách rõ ràng. $mysqli->set_charset("utf8"); .
Sử dụng bộ ký tự an toàn. .
Sử dụng chức năng không gian. .
Kiểm tra biến chứa những gì bạn đang mong đợi

Sự khác biệt giữa xác thực và vệ sinh trong PHP là gì?

Xác thực dữ liệu = Xác định xem dữ liệu có ở dạng phù hợp không. Làm sạch dữ liệu = Xóa mọi ký tự không hợp lệ khỏi dữ liệu .

Bạn có nên vệ sinh đầu vào của người dùng?

Khử trùng và xác thực đầu vào thường là lớp bảo vệ đầu tiên . Sanitizing bao gồm xóa bất kỳ ký tự không an toàn nào khỏi đầu vào của người dùng và xác thực sẽ kiểm tra xem dữ liệu có ở định dạng và loại dự kiến ​​hay không. Những kẻ tấn công đã sử dụng các lỗ hổng cổ điển trong nhiều năm với tỷ lệ thành công khá cao.