khả năng của tôi là tránh người dùng tải lên một số tệp độc hại trên máy chủ web của tôi. Im hoạt động trên môi trường Linux (debian).Làm thế nào để ngăn chặn mọi tệp tải lên độc hại trên máy chủ của tôi? (kiểm tra loại tệp)?
Trên thực tế các cập nhật được xử lý thông qua php bởi mã này:
function checkFile($nomeFile, $myExt = false){
if($myExt != false){ $goodExt = "_$myExt"."_"; }else{ $goodExt = "_.jpg_.bmp_.zip_.pdf_.gif_.doc_.xls_.csv_.docx_.rar_"; }
$punto = strrpos($nomeFile, '.');
$ext = "_".substr($nomeFile, $punto, 8)."_";
if(stristr($goodExt, $ext)){ return 1; }else{ return 0; }
}
đây tôi có thể xác định các phần mở rộng được phép tải lên, và nếu file không gặp họ tôi xóa ngay sau khi tải lên hoàn tất. Nhưng cách này cho phép người dùng tự do thay đổi phần mở rộng của tệp bằng cách đổi tên đơn giản .. và điều đó thật tệ đối với tôi; ngay cả khi một file.exe (ví dụ) sẽ không bao giờ được thực thi nếu được đổi tên trong file.jpg (tôi có đúng không?), tôi không muốn có các tệp nguy hiểm tiềm ẩn trên máy chủ của mình.
Có một cách, trong php, python, hoặc whatelse một hệ thống Unix có thể chạy một cách dễ dàng, để kiểm tra loại tệp thực sự?
Tôi đã thử python mimetypes module, nhưng nó lấy ipotetical mime-type của file .. dựa trên phần mở rộng -.-
Đúng, tệp là cách hay để thực hiện việc này. Ngoài ra, có thể đáng nói đến là các tệp .exe có xu hướng là các tệp thực thi Windows và sẽ không chạy trên Linux. –
Trong khi .EXE sẽ không gây hại cho máy chủ được cấu hình tốt, chúng có thể bị tải xuống và làm hại máy khách của ai đó. Tốt nhất để xác thực tất cả các tệp, ngay cả những tệp không phải là mối đe dọa trực tiếp. –
Câu trả lời này là sai và khiến mọi người nghĩ rằng đây là một cách xác thực an toàn, khi hầu hết các trường hợp là khá vô dụng và dễ dàng bỏ qua. Xin vui lòng xem câu trả lời của tôi cho một lời giải thích đầy đủ. – palako