10/10/2018, 00:20

Xác định mime type của file upload

php có sẵn mime_content_type but not work 4 me. Một số comment tại http://www.php.net/manual/en/functio...ntent-type.php khá chuối, các bạn có biết cách nào khác ko
pcdinh viết 02:33 ngày 10/10/2018
Có lý do cụ thể gi cho việc không dùng $_FILES['userfile']['type'] hay không?
3do viết 02:31 ngày 10/10/2018
$_FILES['userfile']['type'] do browser gửi nên không chính xác
cái nick đó viết 02:21 ngày 10/10/2018
uhm... không biết có phải thằng PHP nó nhắm theo cái file ext. hay không mà một cái file .wma em đổi thành wmv nó cũng bảo là video :-"
pcdinh viết 02:28 ngày 10/10/2018
@cái "gì" đó
Thì nó vẫn là video mà. PHP ko check mime theo cách tầm thường thế đâu.

@3do
Browser căn cứ vào header trong file để gửi header lên server. Đúng là người ta có thể giả mạo header. Tuy nhiên check thêm file ext là đủ an toàn rồi.

Nếu vẫn muốn có cách check mime vì việc gì đó thì dùng fileinfo. Nó sẽ đọc file check 1 dải byte sequence. Cũng thể nói là chính xác 100% cũng có thể là cách an toàn hơn.
3do viết 02:33 ngày 10/10/2018
fileinfo là 1 package của pecl phải ko?. Gõ đại
Code:
pecl install fileinfo
nó báo lỗi thế này
Code:
WARNING: channel "pear.php.net" has updated its protocols, use "channel-update pear.php.net" to update
downloading Fileinfo-1.0.4.tgz ...
Starting to download Fileinfo-1.0.4.tgz (5,835 bytes)
.....done: 5,835 bytes
3 source files, building
running: phpize
sh: phpize: not found
ERROR: `phpize' failed
cái phpize là cái gì vậy (mới xài pecl lần đầu )
TheHeTre viết 02:28 ngày 10/10/2018
Chủ đề này nằm yên nghỉ lâu rồi nhưng xin phép được đào lên để bàn luận thêm.

Việc check extension của file khi upload trong hầu hết các trường hợp là an toàn. Tuy nhiên, với server có thể xảy ra lỗi thực thi đoạn mã độc gắn trong file trực tiếp (ví dụ file remview.php chuyển thành girl.gif rồi tải lên chẳng hạn).

Kiểm tra Mime Type với $_FILE['upload_file'] không trả về kết quả chính xác. Đổi tên một file php thành jpg nó vẫn trả về image/jpeg.

Trong trường hợp không cài thêm PECL:
* Với file ảnh, sau khi upload dùng getimagesize() để trả về mime. Nếu kết quả trả về là trống ---> Không phải file ảnh "nguyên chất"
* Với các thể loại file khác: Ngoài việc cấu hình .htaccess để bảo vệ không cho chạy file. Không biết mọi người có ý kiến nào khác?

PS: Thảo luận trong trường hợp không cài thêm php extension nhé
jiSh@n viết 02:30 ngày 10/10/2018
Được gửi bởi TheHeTre
Khùng mất rồi. Mất công người khác đi dọn rác!
Ko del đi mà còn ránng reply nữa
Bài liên quan
0