Xác thực dữ liệu là một phần không thể thiếu trong quá trình phát triển web, đặc biệt là khi làm việc với các biểu mẫu mà người dùng nhập dữ liệu cá nhân của họ trước rồi gửi dữ liệu đó đến cơ sở dữ liệu. Dữ liệu được gửi ở định dạng không hợp lệ có thể gây ra sự cố bảo mật DBMS. Tin tặc thường sử dụng SQL injection để chèn các lệnh SQL độc hại vào cơ sở dữ liệu. Việc tiêm SQL thậm chí có thể phá hủy cơ sở dữ liệu sau khi được chèn. Do đó, để bảo vệ cơ sở dữ liệu khỏi tin tặc, cần phải vệ sinh và lọc dữ liệu do người dùng nhập trước khi gửi vào cơ sở dữ liệu
Hãy lấy một ví dụ về SQL injection để làm rõ mọi thứ
Giả sử tin tặc nhập '5=5' vào hộp nhập 'Tên người dùng' rồi gửi dữ liệu. Điều kiện '5=5' luôn đúng. Do đó, lệnh SQL sẽ được thực thi sau khi nhấn nút ‘Gửi’ sẽ là
SELECT * FROM registration WHERE UserId = 105 OR 1=1;
Lệnh SQL trên không có lỗi và do đó máy chủ MySQL sẽ thực thi nó. Nhưng, nếu bảng đăng ký chứa thông tin nhạy cảm như thông tin thẻ tín dụng hoặc mật khẩu thì sao?. Tin tặc có thể lấy thông tin về tất cả người dùng đã đăng ký chỉ bằng cách nhập '5=5' vào hộp nhập tên người dùng và sau đó lạm dụng thông tin đó
Để ngăn những trường hợp như vậy xảy ra, cần phải xác thực và làm sạch dữ liệu người dùng.
Hàm
GeeksforGeeks Portal3 được sử dụng cho mục đích đó. Hàm này thường nhận hai tham số. Đầu tiên là biến cần được xác thực và thứ hai là loại kiểm tra chúng tôi muốn thực hiện trên biến đó.
Chúng ta hãy xem xét một số loại kiểm tra cùng với các ví dụ của chúng
- Vệ sinh chuỗi – FILTER_SANITIZE_STRING. Thao tác này sẽ xóa tất cả các thẻ HTML khỏi chuỗi. Thao tác này sẽ khử trùng chuỗi đầu vào và chặn bất kỳ thẻ HTML nào xâm nhập vào cơ sở dữ liệu
GeeksforGeeks Portal
4GeeksforGeeks Portal
5GeeksforGeeks Portal
6____10GeeksforGeeks Portal
1GeeksforGeeks Portal
2GeeksforGeeks Portal
3____95GeeksforGeeks Portal
5GeeksforGeeks Portal
6GeeksforGeeks Portal
2GeeksforGeeks Portal
1GeeksforGeeks Portal
9đầu ra
GeeksforGeeks Portal
Giải thích mã.
Biến 'geeks' trong ví dụ trên lưu trữ tiêu đề 'GeeksforGeeks Portal'. Biến 'chuyên viên máy tính' này sau đó được lọc bằng FILTER_SANITIZE_STRING. Chuỗi đã lọc sau đó được lưu trữ trong biến 'newgeek'. Sau khi lặp lại, đầu ra là 'Cổng thông tin GeeksforGeek'. Điều này là do không có thẻ HTML trong chuỗi gốc và do đó không có gì để lọc. - Xác thực địa chỉ IP – FILTER_VALIDATE_IP. Bộ lọc này kiểm tra xem địa chỉ IP có hợp lệ hay không
GeeksforGeeks Portal
4GeeksforGeeks Portal
11GeeksforGeeks Portal
6GeeksforGeeks Portal
13GeeksforGeeks Portal
1GeeksforGeeks Portal
15GeeksforGeeks Portal
16GeeksforGeeks Portal
11GeeksforGeeks Portal
18GeeksforGeeks Portal
19GeeksforGeeks Portal
6____201GeeksforGeeks Portal
02GeeksforGeeks Portal
03GeeksforGeeks Portal
04GeeksforGeeks Portal
05GeeksforGeeks Portal
06GeeksforGeeks Portal
19GeeksforGeeks Portal
6____201GeeksforGeeks Portal
90GeeksforGeeks Portal
03GeeksforGeeks Portal
04GeeksforGeeks Portal
9đầu ra
GeeksforGeeks Portal
1Giải thích mã.
Địa chỉ IP được lưu trữ trong biến $ipaddr được phát hiện là hợp lệ. Nếu '126. 2. 5’ được lưu trữ trong biến $ipaddr, thì đầu ra sẽ là ‘Địa chỉ IP không hợp lệ’. Điều này là do nó không tuân theo giao thức được thiết kế cho địa chỉ IP. - Vệ sinh số nguyên – FILTER_VALIDATE_INT. Bộ lọc này kiểm tra xem một biến có phải là số nguyên hay không
GeeksforGeeks Portal
4GeeksforGeeks Portal
95GeeksforGeeks Portal
96GeeksforGeeks Portal
15GeeksforGeeks Portal
16GeeksforGeeks Portal
95GeeksforGeeks Portal
90GeeksforGeeks Portal
19GeeksforGeeks Portal
6____201GeeksforGeeks Portal
94GeeksforGeeks Portal
03GeeksforGeeks Portal
04GeeksforGeeks Portal
05GeeksforGeeks Portal
06GeeksforGeeks Portal
19GeeksforGeeks Portal
6____201GeeksforGeeks Portal
32GeeksforGeeks Portal
03GeeksforGeeks Portal
04GeeksforGeeks Portal
9đầu ra
GeeksforGeeks Portal
0Giải thích mã.
Mã sẽ xuất ra 'Hợp lệ' nếu $num là số nguyên hợp lệ, nếu không, đầu ra sẽ là 'Không hợp lệ'. Ở đây, 500 là một số nguyên và đó là lý do tại sao đầu ra là 'Hợp lệ'. - Xác thực ID email – FILTER_SANITIZE_EMAIL và FILTER_VALIDATE_EMAIL. Trước tiên, bộ lọc này sẽ xóa tất cả các ký tự không hợp lệ khỏi email, sau đó kiểm tra xem định dạng có hợp lệ hay không
GeeksforGeeks Portal
4GeeksforGeeks Portal
37GeeksforGeeks Portal
6____939GeeksforGeeks Portal
1GeeksforGeeks Portal
37GeeksforGeeks Portal
3____937GeeksforGeeks Portal
44GeeksforGeeks Portal
15GeeksforGeeks Portal
16GeeksforGeeks Portal
37GeeksforGeeks Portal
48GeeksforGeeks Portal
19GeeksforGeeks Portal
6____201GeeksforGeeks Portal
52GeeksforGeeks Portal
03GeeksforGeeks Portal
04GeeksforGeeks Portal
05GeeksforGeeks Portal
06GeeksforGeeks Portal
19GeeksforGeeks Portal
6______201GeeksforGeeks Portal
60GeeksforGeeks Portal
03GeeksforGeeks Portal
04GeeksforGeeks Portal
9đầu ra
GeeksforGeeks Portal
9Giải thích mã.
Đầu tiên, email được lưu trữ trong biến $em được làm sạch để xóa mọi ký tự không hợp lệ như ‘/> - Xác thực URL – FILTER_SANITIZE_URL. Giống như bộ lọc email, trước tiên bộ lọc này cũng xóa tất cả các ký tự không hợp lệ khỏi URL và sau đó kiểm tra xem định dạng có hợp lệ hay không
GeeksforGeeks Portal
4GeeksforGeeks Portal
65GeeksforGeeks Portal
3____965______968GeeksforGeeks Portal
15GeeksforGeeks Portal
16GeeksforGeeks Portal
65______102GeeksforGeeks Portal
19GeeksforGeeks Portal
6____201GeeksforGeeks Portal
06GeeksforGeeks Portal
03GeeksforGeeks Portal
04GeeksforGeeks Portal
05GeeksforGeeks Portal
06GeeksforGeeks Portal
19GeeksforGeeks Portal
6______201GeeksforGeeks Portal
14GeeksforGeeks Portal
03GeeksforGeeks Portal
04GeeksforGeeks Portal
9đầu ra
GeeksforGeeks Portal
9Giải thích mã.
Email được lưu trữ trong biến $url trước tiên được làm sạch để loại bỏ các ký tự không hợp lệ. Sau đó, URL được kiểm tra xem định dạng URL có hợp lệ hay không.
Việc vệ sinh có bắt buộc trong PHP không?
Do đó, để bảo vệ cơ sở dữ liệu khỏi tin tặc, cần phải vệ sinh và lọc dữ liệu do người dùng nhập trước khi gửi vào cơ sở dữ liệu .
Tại sao bạn phải luôn làm sạch đầu vào của người dùng trước khi sử dụng chúng trong các truy vấn của mình?
Một ứng dụng nhận được các truy vấn và yêu cầu từ các nguồn không đáng tin cậy có thể khiến hệ thống bị tấn công nguy hiểm. Vệ sinh đầu vào đảm bảo rằng dữ liệu đã nhập tuân thủ các yêu cầu bảo mật và hệ thống con, loại bỏ các ký tự không cần thiết có thể gây hại