- Trung Nguyen
05/05/2020
Nội dung chính
- Bộ lọc PHP mở rộng
- Tại sao nên sử dụng bộ lọc?
- Lọc một chuỗi
- Xác thực một số nguyên
- Xác thực địa chỉ IP
- Lọc và xác thực địa chỉ email
- Lọc và xác thực một URL
- Xác thực một số nguyên trong phạm vi
- Xác thực địa chỉ IPv6
- Xác thực URL phải chứa QueryString
- Xóa các ký tự ASCII có giá trị > 127
6 min read
Trong bài viết "Xác thực biểu mẫu [form] trong PHP" chúng ta đã tìm hiểu cách xác thực dữ liệu người dùng nhập vào biểu mẫu. Trong bài viết này chúng ta cũng đã sử dụng bộ lọc để kiểm tra sự hợp lệ của email và địa chỉ website. Nếu bạn bỏ lỡ bài viết này thì có thể xem ở đây:
Xác thực biểu mẫu [form] trong PHP | Comdy
Hướng dẫn bạn cách xác thực biểu mẫu [form] trong PHP và chống các kiểu tấn công XSS phổ biến.
Ở bài viết này chúng ta sẽ tìm hiểu kỹ hơn về bộ lọc PHP. Có hai thuật ngữ bạn nên chú ý trong bài viết này:
Xác thực dữ liệu = Xác định xem dữ liệu có hợp lệ không.
Lọc dữ liệu = Loại bỏ bất kỳ ký tự không hợp lệ khỏi dữ liệu.
Bộ lọc PHP mở rộng
Các bộ lọc PHP được sử dụng để xác thực và lọc dữ liệu đầu vào từ bên ngoài.
Bộ lọc PHP mở rộng có nhiều chức năng cần thiết để kiểm tra đầu vào của người dùng và được thiết kế để giúp xác thực dữ liệu dễ dàng và nhanh chóng hơn.
Hàm filter_list[]
được sử dụng để in ra danh sách các bộ lọc mở rộng mà PHP cung cấp:
Filter Name
Filter ID
Tại sao nên sử dụng bộ lọc?
Nhiều ứng dụng web nhận dữ liệu đầu vào từ bên ngoài. Dữ liệu đầu vào từ bên ngoài có thể là:
- Dữ liệu của người dùng từ một biểu mẫu.
- Cookie.
- Dữ liệu web service.
- Các biến môi trường của server.
- Kết quả truy vấn cơ sở dữ liệu.
Bạn nên xác thực dữ liệu từ bên ngoài!
Dữ liệu được gửi không hợp lệ có thể dẫn đến các vấn đề bảo mật và phá vỡ trang web của bạn!
Bằng cách sử dụng các bộ lọc PHP, bạn có thể chắc chắn rằng ứng dụng của bạn có được đầu vào chính xác!
Lọc một chuỗi
Ví dụ sau sử dụng hàm filter_var[]
để xóa tất cả các thẻ HTML khỏi chuỗi:
Đây là kết quả mà bạn sẽ nhận được:
Hello World!
Xác thực một số nguyên
Ví dụ sau sử dụng hàm filter_var[]
để kiểm tra xem biến $int
có phải là số nguyên không.
Nếu $int
là một số nguyên, đầu ra của mã bên dưới sẽ là: "Integer is valid". Nếu $ int không phải là số nguyên, đầu ra sẽ
là: "Integer is not valid":
Đây là kết quả mà bạn sẽ nhận được:
Integer is valid
Trong ví dụ trên, nếu $int
được gán thành 0, hàm trên sẽ trả về "Integer is not valid". Để giải quyết vấn đề này, hãy sử dụng mã dưới đây:
Đây là kết quả:
Integer is valid
Xác thực địa chỉ IP
Ví dụ sau sử dụng hàm filter_var[]
để kiểm tra xem biến $ip
có phải là địa chỉ IP hợp lệ không:
Đây là kết quả:
127.0.0.1 is a valid IP address
Lọc và xác thực địa chỉ email
Ví dụ sau sử dụng hàm filter_var[]
để xóa tất cả các ký tự không hợp lệ khỏi biến $email
, sau đó kiểm tra xem đó có phải là địa chỉ email hợp lệ không:
Đây là kết quả:
is a valid email address
Lọc và xác thực một URL
Ví dụ sau sử dụng hàm filter_var[]
để xóa tất cả các ký tự không hợp lệ khỏi URL, sau đó kiểm tra xem $url
có phải là URL hợp lệ không:
Đây là kết quả:
//tech.comdy.vn is a valid URL
Xác thực một số nguyên trong phạm vi
Ví dụ sau sử dụng hàm filter_var[]
để kiểm tra xem một biến kiểu integer có nằm trong phạm vi từ 1 đến 200 không:
Đây là kết quả:
Variable value is within the legal range
Xác thực địa chỉ IPv6
Ví dụ sau sử dụng hàm filter_var[]
hàm để kiểm tra xem biến $ip
có phải là địa chỉ IPv6 hợp lệ không:
Đây là kết quả:
2001:0db8:85a3:08d3:1319:8a2e:0370:7334 is a valid IPv6 address
Xác thực URL phải chứa QueryString
Ví dụ sau sử dụnghàm filter_var[]
để kiểm tra xem biến $ url có phải là URL có chuỗi truy vấn không:
Đây là kết quả:
//tech.comdy.vn?page=2 is a valid URL with a query string
Xóa các ký tự ASCII có giá trị > 127
Ví dụ sau sử dụng hàm filter_var[]
để lọc một chuỗi. Nó sẽ xóa tất cả các thẻ HTML và tất cả các ký tự ASCII có giá trị > 127 khỏi chuỗi:
Đây là kết quả:
Hello World!
Nếu Comdy hữu ích và giúp bạn tiết kiệm thời gian
Bạn có thể vui lòng tắt trình chặn quảng cáo ❤️ để hỗ trợ chúng tôi duy trì hoạt động của trang web.
Lập Trình PHP