Tôi có một trang web mà người dùng có thể tải tệp lên thư mục phụ. Tôi đang lọc các bản tải lên để kiểm tra mã độc tiềm ẩn. Tôi mới ở khía cạnh bảo mật của mọi thứ, vì vậy, điều này có phải là cách thực hành tốt nhất để đảm bảo tải lên máy chủ không? Nếu không hoặc nếu tôi thiếu bất cứ điều gì, bạn có thể chỉ cho tôi đi đúng hướng không?đây có phải là bộ lọc tốt cho các tệp được tải lên không?
//arrays with acceptable file extensions/types -- default validations set to false
$acceptable_ext = array('jpg', 'JPG', 'jpeg', 'JPEG', 'gif', 'GIF', 'png', 'PNG');
$acceptable_type = array('image/jpeg', 'image/gif', 'image/png');
$validated_ext = 0;
$validated_type = 0;
//validate file extension and type
if($_FILES && $_FILES['file']['name']) {
$file_info = pathinfo($_FILES['file']['name']);
//validate extension
for ($x=0; $x < count($acceptable_ext); $x++) {
if($file_info['extension'] == $acceptable_ext[$x]) {
$validated_ext = 1;
}
}
//validate type
for ($x=0; $x < count($acceptable_type); $x++) {
if($file_info['type'] == $acceptable_type[$x]) {
$validated_type = 1;
}
}
}
if($validated_ext && $validated_type) {
//upload file to the server blah blah
}
có vẻ ổn với tôi nhưng tại sao 2 cho vòng lặp? bạn không thể chạy cả hai kiểm tra trong vòng đầu tiên? – NSjonas
các mảng có 2 độ dài khác nhau – Hat
@flapjacks: 'if (in_array ($ file_info ['type'], $ acceptable_type))' ... chỉ cần nói ... bạn không cần một trong các vòng lặp. :) – cHao