Ngăn chặn người dùng upload file không phải là hình ảnh

Chức năng upload mặc định trên WordPress, cho phép bạn tải lên các file bất kỳ, từ hình ảnh, âm thanh, video, code…vv. Chính vì sự đa dạng và tiện dụng của chức năng upload của media, góp phần tạo nên một lổ hổng bảo mật vô cùng lớn, đặc biệt nếu website của bạn hoạt động với chức năng cho phép người dùng cũng có thể tương tác và tải thêm file vào media.
Để tránh rủi ro cho việc người dùng hay cá nhân bạn tải các file mã độc lên website, thì dưới đây mình xin chia sẻ cho các bạn một đoạn code thêm bộ lọc khi upload file lên website.

Code tạo bộ lọc upload file

Đoạn code bên dưới giúp cho bạn tạo một bộ lọc, loại bỏ ra các file không phải định dạng .GIF, .PNG, .JPG khi tải lên website (chức năng này hoạt động trên toàn bộ website kể cả trình tải lên plugin cũng không thể hoạt động).
Để sử dụng bộ lọc, các bạn chỉ cần sao chép đoạn code bên dưới, rồi dán vào file funciton.php trong thư mục theme mà bạn đang sử dụng.


// chi cho phep tai len các file gif png jpg
add_filter('wp_handle_upload_prefilter', 'yoursite_wp_handle_upload_prefilter');
function yoursite_wp_handle_upload_prefilter($file) {
if ($file['type']=='application/octet-stream' && isset($file['tmp_name'])) {
$file_size = getimagesize($file['tmp_name']);
if (isset($file_size['error']) && $file_size['error']!=0) {
$file['error'] = "Unexpected Error: {$file_size['error']}";
return $file;
} else {
$file['type'] = $file_size['mime'];
}
}
list($category,$type) = explode('/',$file['type']);
if ('image'!=$category || !in_array($type,array('jpg','jpeg','gif','png'))) {
$file['error'] = "Xin lỗi bạn chỉ có thể tải lên file ảnh định dạng .GIF, .JPG, hay .PNG";
} else if ($post_id = (isset($_REQUEST['post_id']) ? $_REQUEST['post_id'] : false)) {
if (count(get_posts("post_type=attachment&post_parent={$post_id}"))>20) // so hinh anh duoc phép tai len
$file['error'] = "Xin lỗi, bạn không thể tải lên nhiều hơn 20 hình ảnh.";
}
return $file;
}

!in_array($type,array(‘jpg‘,’jpeg‘,’gif‘,’png‘) Ở code này đang sử dụng bộ lọc cho phép tải lên các file có định dạng jpg, jpeg, gif, png, bạn cũng có thể thêm vào các định dạng khác mà bạn muốn.
{$post_id}”))>20) thay đổi giá trị 20 bằng thông số mà bạn muốn người dùng tải lên số lượng hình ảnh trong một bài viết.

Chúc các bạn thành công!

Đánh giá bài viết bạn ơi!