2012-12-17 22 views
5

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 
} 
+0

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

+0

các mảng có 2 độ dài khác nhau – Hat

+1

@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

Trả lời

1

Bạn có thể xem một số cấu hình bảo mật here.

Kiểm tra các loại MIME, ini config, .htaccess v.v. sẽ cung cấp cho bạn bảo mật bổ sung hoặc xác thực thêm theo liên kết.

Các vấn đề liên quan