Cách ngăn chặn lỗ hổng tải lên tệp

Cách ngăn chặn lỗ hổng tải lên tệp
Độc giả như bạn giúp hỗ trợ MUO. Khi bạn mua hàng bằng các liên kết trên trang web của chúng tôi, chúng tôi có thể kiếm được hoa hồng liên kết. Đọc thêm.

Các mô-đun tải lên tệp là một trong những liên kết yếu nhất trong các ứng dụng web. Bất kỳ lỗi nào mắc phải, kể cả những lỗi bạn cho là nhỏ, đều có thể khiến quyền kiểm soát máy chủ rơi trực tiếp vào tay kẻ tấn công mạng. Vì lý do này, các nhà phát triển phần mềm cần biết những lỗi phổ biến nhất và một số phương pháp tấn công có thể xảy ra.





LÀM VIDEO TRONG NGÀY

Vậy giả mạo phía khách hàng là gì? Làm thế nào bạn có thể chống lại điều này để giữ an toàn cho các trang web của bạn và người dùng của bạn?





Giả mạo phía khách hàng là gì?

Giả mạo phía máy khách là khái niệm cơ bản về các cuộc tấn công ứng dụng web nói chung. Nói một cách đơn giản, điều đó có nghĩa là bạn không còn có thể tin tưởng vào bất kỳ dữ liệu nào bạn gửi cho người dùng. Ngoài ra, giả mạo phía máy khách là một trong những nền tảng của phát triển ứng dụng an toàn. Nếu bạn kiểm tra mô-đun tải tệp lên mà bạn đang xử lý và xem xét hành vi giả mạo phía máy khách, thì dữ liệu bạn không thể tin cậy bao gồm:





  • Tên của tệp đã tải lên.
  • Loại nội dung của tệp đã tải lên.

Hai mục này ở đâu bạn có cơ hội để đưa vào danh sách trắng như một nhà phát triển phần mềm. Dữ liệu tên của tệp đã tải lên có thể chứa bất kỳ nội dung nào bị giả mạo phía máy khách. Với dữ liệu Loại nội dung của tệp đã tải lên, ngay cả khi kẻ tấn công đang tải tệp .exe lên, tệp này có thể xuất hiện dưới dạng hình ảnh/jpeg trong hệ thống.

Phần mở rộng tệp và danh sách trắng

 Kiểm tra các phần mở rộng tập tin được tải lên hệ thống

Trong khi phát triển các mô-đun tải tệp lên, điều đầu tiên cần làm là quy trình lập danh sách trắng cho phần mở rộng tệp . Ví dụ: người dùng muốn tải lên tệp có tên 'muo.jpeg'. Bạn phải đảm bảo rằng phần mở rộng tệp mà người dùng muốn tải lên là .jpeg. Đối với điều này, hệ thống sẽ kiểm tra tệp đã tải lên và xem liệu đó có phải là một trong những phần mở rộng tệp được phép hay không. Để hiểu cách bạn có thể thực hiện việc này, hãy kiểm tra mã PHP đơn giản sau:



$file_parts = pathinfo($filename);
switch($file_parts['extension'])
{
case "jpg":
break;

case "bat": // Or exe, dll, so, etc.
break;

case "":
case NULL: // No file extension
break;
}

Bạn có thể thực hiện điều này với một khối mã tương tự như khối mã ở trên hoặc bạn có thể sử dụng các lớp và chức năng được cung cấp bởi khung công tác mà bạn đang sử dụng.