Điều nào sau đây cung cấp loại nội dung của tệp được tải lên trong PHP?

Một biểu mẫu tải lên tệp đơn giản thường bao gồm một biểu mẫu HTML được hiển thị cho máy khách và một tập lệnh phía máy chủ xử lý tệp đang được tải lên. Ví dụ sau chứa một biểu mẫu HTML như vậy và tập lệnh phía máy chủ được viết bằng PHP

Khi trình thông dịch PHP nhận được yêu cầu phương thức HTTP POST của loại mã hóa dữ liệu nhiều phần/biểu mẫu, tập lệnh sẽ tạo một tệp tạm thời có tên ngẫu nhiên trong một thư mục tạm thời trên máy chủ, ví dụ: /var/tmp/php6yXOVs/. Trình thông dịch PHP cũng sẽ điền vào mảng toàn cầu $_FILES với thông tin về tệp đã tải lên như sau

  • $_FILES[‘tệp đã tải lên’][‘tên’]. Tên gốc của tệp trên máy khách
  • $_FILES[‘tệp đã tải lên’][‘loại’]. Loại mime của tập tin
  • $_FILES[‘tệp đã tải lên’][‘kích thước’]. Kích thước của tệp tính bằng byte
  • $_FILES[‘tệp đã tải lên’][‘tmp_name’]. tạm thời

tên tệp lưu trữ tệp đã tải lên trên máy chủ
Hàm PHP move_uploaded_file[] sẽ di chuyển tệp tạm thời đến vị trí do người dùng cung cấp. Trong trường hợp này, đích nằm bên dưới gốc của máy chủ. Do đó, các tệp có thể được truy cập bằng URL chẳng hạn như http. //www. ví dụ. com/tải lên/tệp đã tải lên. txt/.
Trong ví dụ đơn giản này, tập lệnh phía máy chủ không áp đặt hạn chế nào đối với loại tệp nào được phép tải lên máy chủ. Ở mức độ như vậy, kẻ tấn công có thể dễ dàng tải lên một PHP độc hại có thể dẫn đến sự xâm nhập của máy chủ.

Đầu vào bộ lọc

  • danh sách đen

Một phương pháp xác thực yếu khác được sử dụng rộng rãi trong các biểu mẫu tải tệp lên là sử dụng danh sách đen các loại tệp có phần mở rộng nguy hiểm. Các biểu mẫu tải lên bằng cơ chế này sẽ kiểm tra phần mở rộng của tệp đang được tải lên và so sánh phần mở rộng tệp của nó với danh sách các phần mở rộng mà ứng dụng cho là có hại.
Mặc dù điều này có thể phần nào hiệu quả đối với một số loại tệp, nhưng việc lựa chọn sử dụng danh sách đen là một lựa chọn tồi vì thực tế không thể biên soạn danh sách tất cả các phần mở rộng tệp có thể mà kẻ tấn công có thể lạm dụng, đặc biệt là . Ví dụ: kẻ tấn công có thể thay đổi các chữ cái trong phần mở rộng thành dạng viết hoa của chúng [. php,. Php,. pHP] hoặc chẳng hạn như. pht, phpt, phtml, php3,php4,php5,php6. Cách tiếp cận danh sách trắng trong trường hợp sử dụng này hiệu quả hơn nhiều.

Một cách khả thi mà kẻ tấn công có thể bỏ qua danh sách cấm mở rộng tệp trên Máy chủ HTTP Apache là trước tiên tải lên một. htaccess với nội dung sau

AddType application/x-httpd-php .png

Cấu hình trên sẽ hướng dẫn Máy chủ HTTP Apache thực thi các hình ảnh PNG như thể chúng là các tập lệnh PHP. Kẻ tấn công sau đó sẽ tiến hành tải lên một tệp có phần. png [phần mở rộng tệp có lẽ được cho phép], có thể chứa mã PHP thay vì hình ảnh và điều này sẽ cho phép thực thi mã

Ảnh chụp màn hình bên dưới hiển thị yêu cầu HTTP tới tệp PNG chứa mã PHP gọi hàm phpinfo[]

  • Xác thực kiểu nội dung/kiểu MIME

Một lỗi phổ biến khi bảo mật các biểu mẫu tải tệp lên là chỉ kiểm tra loại MIME do bộ thực thi ứng dụng trả về. Ví dụ: với PHP, khi một tệp được tải lên máy chủ, PHP sẽ đặt biến $_FILES[‘uploadedfile’][‘type’] thành kiểu MIME do máy khách web cung cấp.
Vì kẻ tấn công có thể dễ dàng kiểm soát loại MIME bằng cách gửi cho máy chủ một yêu cầu HTTP POST được tạo thủ công, nên việc xác thực như vậy là dễ dàng để kẻ tấn công vượt qua. Ở mức độ như vậy, kẻ tấn công có thể dễ dàng tải lên tệp PHP độc hại với loại MIME được cho phép, điều này có thể dẫn đến thỏa hiệp máy chủ.

  • danh sách trắng

ví dụ về danh sách trắng

Lọc bằng danh sách trắng có nghĩa là ứng dụng chỉ được phép cho loại hình ảnh/png

Bỏ qua Loại nội dung [kiểu MIME] bằng bộ burp, chúng tôi có thể chặn các yêu cầu HTTP bằng bộ burp và chúng tôi có thể chỉnh sửa các yêu cầu

Các tính năng tải lên tệp PHP cho phép bạn tải lên cả tệp văn bản và tệp nhị phân. Hơn nữa, bạn có thể có toàn quyền kiểm soát tệp sẽ được tải lên thông qua các chức năng vận hành tệp và xác thực PHP

PHP $_FILES

PHP global $_FILES chứa tất cả thông tin của tệp. Với sự trợ giúp của $_FILES toàn cầu, chúng tôi có thể lấy tên tệp, loại tệp, kích thước tệp, tên tệp tạm thời và các lỗi liên quan đến tệp

Ở đây, chúng tôi giả sử rằng tên tệp là tên tệp

$_FILES['tên tệp']['tên']

trả về tên tập tin

$_FILES['filename']['type']

trả về loại MIME của tệp

$_FILES['filename']['size']

trả về kích thước của tệp [tính bằng byte]

$_FILES['filename']['tmp_name']

trả về tên tệp tạm thời của tệp được lưu trữ trên máy chủ

$_FILES['tên tệp']['lỗi']

trả về mã lỗi liên quan đến tệp này

hàm move_uploaded_file[]

Hàm move_uploaded_file[] di chuyển tệp đã tải lên đến một vị trí mới. Hàm move_uploaded_file[] kiểm tra nội bộ xem tệp có được tải lên thông qua yêu cầu POST hay không. Nó di chuyển tệp nếu nó được tải lên thông qua yêu cầu POST

Cái nào sau đây cung cấp Contenttype của tệp đã tải lên trong PHP?

enctype=" multipart/form-data" . Giá trị này đề cập đến loại nội dung của các tệp sẽ được chấp nhận để tải lên. Nó cũng cho biết loại mã hóa mà tập lệnh PHP sẽ sử dụng để tải lên. Giá trị multipart/form-data cho phép chúng tôi tải tệp lên bằng phương thức POST.

Làm cách nào để lấy nội dung của tệp đã tải lên trong PHP?

Để lấy thông tin cơ bản của các tệp đã tải lên, PHP cung cấp một mảng $_FILES được xác định trước được giải thích chi tiết bên dưới. Mảng $_FILES. $_FILES là một mảng toàn cầu kết hợp hai chiều được xác định trước giúp nhận tập lệnh để lấy thông tin về tệp đã tải lên thông qua phương thức đăng HTTP.

Loại nội dung của tệp PHP là gì?

PHP. hàm mime_content_type[]. Hàm mime_content_type[] là một hàm sẵn có trong PHP được sử dụng để lấy loại nội dung MIME của tệp. Thông số. Hàm này chấp nhận tham số duy nhất $file chỉ định đường dẫn của tệp mà chi tiết MIME cần tìm

Làm cách nào để tải lên bất kỳ loại tệp nào trong PHP?

Tải lên tệp PHP .
Định cấu hình "php. ini" Tập tin. Trước tiên, hãy đảm bảo rằng PHP được định cấu hình để cho phép tải tệp lên. .
Kiểm tra xem tệp đã tồn tại chưa. Bây giờ chúng ta có thể thêm một số hạn chế. .
Kích thước tệp giới hạn. Trường nhập tệp trong biểu mẫu HTML của chúng tôi ở trên được đặt tên là "fileToUpload". .
Loại tệp giới hạn. .
Hoàn thành tải lên tệp PHP Script

Chủ Đề