Download the PHP package nguyenquocanhz/mime-type without Composer
On this page you can find all versions of the php package nguyenquocanhz/mime-type. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download nguyenquocanhz/mime-type
More information about nguyenquocanhz/mime-type
Files in nguyenquocanhz/mime-type
Package mime-type
Short Description Xac dinh va kiem tra MIME type an toan cho PHP - chong path traversal, SVG XSS, upload gia mao
License MIT
Homepage https://github.com/nguyenquocanhz/php-mime-type
Informations about the package mime-type
nguyenquocanhz/mime-type
Xác định và kiểm tra MIME type an toàn cho PHP 8.1+.
Thay thế mime_content_type() với 3 khác biệt chính:
mime_content_type() |
MimeType |
|
|---|---|---|
.css / .js |
text/plain ❌ |
text/css / text/javascript ✅ |
| File lỗi | false + E_WARNING |
MimeException |
phar://, ../../etc/passwd |
Xử lý bình thường ❌ | Bị chặn ✅ |
Cài đặt
Namespace là Gems\Mime\ (không trùng tên vendor — Composer không bắt buộc phải trùng).
Chưa có Composer thì require autoloader dự phòng:
Yêu cầu: PHP >= 8.1, ext-fileinfo.
Dùng nhanh
Serve file
headersFor() luôn thêm X-Content-Type-Options: nosniff, và tự ép tải xuống
với các type chạy được script (SVG, HTML, XML) để chặn stored XSS.
Kết quả với .svg:
Kiểm tra file upload
validateUpload() làm 6 bước:
- Kiểm tra
UPLOAD_ERR_OKvàis_uploaded_file() - Chặn file rỗng và file quá
maxBytes - Chặn đuôi nguy hiểm, kể cả đuôi kép
avatar.php.jpg - Đọc MIME thật từ magic bytes, đối chiếu allowlist
- Với ảnh: kiểm tra thêm
getimagesize()để loại file polyglot - Sinh tên ngẫu nhiên, đuôi lấy từ MIME thật — không giữ gì từ client
Những gì thư viện KHÔNG làm
- Không thay thế việc lưu file upload ngoài web root. MIME hợp lệ vẫn có thể kèm payload; cách chắc chắn nhất là để file ở nơi Apache không execute được.
- Không chống được server config sai. Nếu Apache có
AddHandlercho đuôi kép thì.jpgvẫn chạy như PHP — phải sửa ở vhost. - Không quét virus. Cần ClamAV hoặc tương đương cho nội dung file.
Bảo mật
Nếu baseDir không được đặt, mọi đường dẫn đều được chấp nhận miễn tồn tại.
Luôn đặt baseDir khi đường dẫn có thể đến từ request.
Test
License
MIT
All versions of mime-type with dependencies
ext-fileinfo Version *