Tôi có thể tin tưởng loại tệp từ $_FILES
khi tải lên hình ảnh không? Hay tôi phải kiểm tra lại với exif_imagetype()
?
Trả lời
Từ documentation:
kiểu MIME của tập tin, nếu trình duyệt cung cấp thông tin này. Một ví dụ sẽ là "hình ảnh/gif". Tuy nhiên, loại mime này không được kiểm tra ở phía PHP và do đó, đừng coi trọng giá trị của nó.
tôi luôn luôn sử dụng chức năng tiếp theo để kiểm tra hình ảnh hợp lệ:
function Check_Image($Filename) {
if ($Check_Image = @getimagesize($Filename)) {
return TRUE;
}
return FALSE;
}
Không bao giờ tin tưởng bất cứ điều gì mà đến từ bên ngoài, đặc biệt là tập tin cập nhật!
Kiểm tra kích thước, vị trí, mime/loại, extenstion và bất cứ điều gì khác mà bạn có thể kiểm tra!
Nhưng loại hình có xuất phát từ bên ngoài không? Hoặc là một cái gì đó được thêm vào bởi php? – HappyDeveloper
Trình duyệt cung cấp, không tin tưởng. –
@Wesley van Opdorp đồng ý, cũng kiểm tra * nội dung * nếu có thể. – Cheekysoft
Không, bạn không thể tin tưởng được vì this information is provided by the client browser.
$_FILES['userfile']['type']
kiểu MIME của tập tin, nếu trình duyệt cung cấp thông tin này. Một ví dụ sẽ là "hình ảnh/gif". Tuy nhiên, loại mime này không được kiểm tra ở phía PHP và do đó không được dùng giá trị của nó cho được cấp.
Không, bạn không thể tin tưởng biến số $_FILES['userfile']['type']
. Giá trị hiện tại trong biến này có thể được giả mạo. Bạn có thể sử dụng finfo_file
để phát hiện loại tệp tin đáng tin cậy hơn:
$finfo = finfo_open(FILEINFO_MIME_TYPE); // we need mime type
echo finfo_file($finfo, "/path/to/uploaded/file"); // displays something like image/gif
finfo_close($finfo);
Các chức năng này yêu cầu PHP> = 5.3.0.
- 1. Tôi có thể tin tưởng các biến môi trường của mình không?
- 2. Tôi có thể tin tưởng phương thức PHP __destruct() được gọi không?
- 3. Tôi có thể lấy thông tin về bảng, cột và loại từ mô hình không?
- 4. Không tin tưởng tập tin .hg/HGRC từ gốc sử dụng không tin cậy, nhóm dev
- 5. $ _FILES ["tệp"] ["size"] trả về 0?
- 6. $ _FILES Không hoạt động?
- 7. Bất kỳ ý tưởng nào Tại sao mã C của tôi không thể đọc từ/proc?
- 8. Có an toàn để tin tưởng $ _SERVER ['REMOTE_ADDR'] không?
- 9. PHP: $ _FILES [ "file"] [ "gõ"] là vô ích
- 10. Tôi có thể tải javascript từ tệp php không?
- 11. Làm thế nào tôi có thể tin tưởng rằng các tiêu đề HTTP của SiteMinder không bị giả mạo?
- 12. $ _FILES Rỗng Khi tải lên
- 13. Tôi có thể tạo một từ điển các loại chung?
- 14. tại sao chúng tôi tin tưởng chứng chỉ SSL?
- 15. Làm cách nào tôi có thể sử dụng getimagesize() với $ _FILES ['']?
- 16. PHP $ _FILES nhiều tập tin tải lên vấn đề
- 17. Tôi có thể lấy Uri của tập tin hình ảnh từ tên của nó không?
- 18. Tôi có thể lấy nội dung của tệp được tải lên bằng php bằng cách nào?
- 19. Thay đổi mã hóa tệp mà không bị mất thông tin trong ý tưởng intellij
- 20. Intellij ý tưởng vấn đề với tập tin văn bản không thể đọc
- 21. Tôi không thể tìm thấy tệp debug.keystore
- 22. PHP - Lặp qua $ _FILES để kiểm tra filetype
- 23. Điều chính xác có nghĩa là gì khi $ _FILES trống?
- 24. Tôi có thể hợp nhất các tệp trong git không?
- 25. Làm thế nào tôi có thể loại bỏ các giá trị Không có trong từ điển?
- 26. Tôi có thể khai báo từ điển có mảng động dưới dạng loại giá trị không?
- 27. Gettext: Ý tưởng tốt cho ID tin nhắn có phải là văn bản tiếng Anh không?
- 28. Yii, lưu hình ảnh từ $ _FILES, nhưng không sử dụng mô hình
- 29. Tôi có thể soạn một Tệp Cấu hình Mùa xuân từ các tệp nhỏ hơn không?
- 30. Tôi có thể tải một tệp .gitconfig từ tệp khác không?
hoàn hảo, cảm ơn – HappyDeveloper