Bootstrap

Vũ Thành Lâm

Content - Code - SEO - MMO
17/10/1979
Tây Mỗ - Nam Từ Liêm - Hà Nội
thanhlam19792003

Lamvt – Vũ Thành Lâm – bắt đầu Code 2005 Freelancer từ 2006 với hàng ngàn dự án lớn nhỏ cho nước ngoài và hàng trăm dự án web cho Việt Nam.

SEO thành công rất nhiều dự án lớn, độ khó cao.
MOD (Moderator) và Admin (Administraror) của nhiều diễn đàn về SEO và CODE web MMO tại Việt Nam
Dạy Lập trình Thiết kế Web và SEO Miễn phí 17++ Năm (Từ 2006 đến Nay)

Bảo vệ file Upload khi người dùng không đăng nhập WordPress

4.7/5 - (3 bình chọn)

Quản lý việc tải lên thế nào khi người dùng không đăng nhập?

Các vấn đề liên quan tới thông tin, nội dung của website bạn hoàn toàn có thể quản lý ngay trong phần quản trị của trang web. Tuy nhiên, những nội dung mà những người dùng/ khách vãng lai đăng lên trang web của bạn làm sao để có thể quản lý được.

Thông thường, người dùng sẽ phải đăng nhập để tải lên các thông tin cần thiết ở một website nào đó. Bên cạnh đó, một số website không bắt buộc người dùng phải đăng nhập mới có quyền đăng tải. Bởi vậy, việc quản lý thông tin tải lên khi người dùng không đăng nhập là điều biên tập viên/ quản trị website phải thực sự lưu ý.

Bảo vệ file Upload khi người dùng không đăng nhập WordPress wordpress-upload-file

Những dữ liệu tải lên khi người dùng không đăng nhập sẽ có thể gây ảnh hưởng tới tài nguyên website của bạn. Cũng có thể, một đối tượng xấu mặt muốn thông qua việc đăng tải để truy cập vào hệ thống dữ liệu website. Nếu chỉ kiểm tra cookie có tồn tại hay không chưa hẳn là một điều có thể bảo vệ được website của bạn.

Một số ý kiến cho rằng dùng .htacess

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} ^.*uploads/private/.*
RewriteCond %{HTTP_COOKIE} !^.*wordpress_logged_in.*$ [NC]
RewriteRule . /index.php [R,L]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

Để tăng khả năng bảo vệ, bạn có thể cài đặt chế độ tường lửa “proxy” cho tất cả yêu cầu vào thư mục được tải lên thông qua một tập lệnh php:

RewriteCond %{REQUEST_FILENAME} -s
RewriteRule ^wp-content/uploads/(.*)$ dl-file.php?file=$1 [QSA,L]

Sau khi bạn thiết lập chế độ tường lửa, tất cả các yêu cầu tải lên tệp bao gồm cả hình ảnh lẫn nội dung sẽ đi đến dl-file.php đó. Thông qua dữ liệu này, bạn có thể xác minh nếu người dùng đăng nhập hay không.

Các bạn có thể tham khảo ở đây ms-files.php

<pre><?php
/*
 * dl-file.php
 *
 * Protect uploaded files with login.
 * 
 * @link http://wordpress.stackexchange.com/questions/37144/protect-wordpress-uploads-if-user-is-not-logged-in
 * 
 * @author hakre <http://hakre.wordpress.com/>
 * @license GPL-3.0+
 * @registry SPDX
 */

require_once('wp-load.php');

is_user_logged_in() ||  auth_redirect();

list($basedir) = array_values(array_intersect_key(wp_upload_dir(), array('basedir' => 1)))+array(NULL);

$file =  rtrim($basedir,'/').'/'.str_replace('..', '', isset($_GET[ 'file' ])?$_GET[ 'file' ]:'');
if (!$basedir || !is_file($file)) {
	status_header(404);
	die('404 &#8212; File not found.');
}

$mime = wp_check_filetype($file);
if( false === $mime[ 'type' ] && function_exists( 'mime_content_type' ) )
	$mime[ 'type' ] = mime_content_type( $file );

if( $mime[ 'type' ] )
	$mimetype = $mime[ 'type' ];
else
	$mimetype = 'image/' . substr( $file, strrpos( $file, '.' ) + 1 );

header( 'Content-Type: ' . $mimetype ); // always send this
if ( false === strpos( $_SERVER['SERVER_SOFTWARE'], 'Microsoft-IIS' ) )
	header( 'Content-Length: ' . filesize( $file ) );

$last_modified = gmdate( 'D, d M Y H:i:s', filemtime( $file ) );
$etag = '"' . md5( $last_modified ) . '"';
header( "Last-Modified: $last_modified GMT" );
header( 'ETag: ' . $etag );
header( 'Expires: ' . gmdate( 'D, d M Y H:i:s', time() + 100000000 ) . ' GMT' );

// Support for Conditional GET
$client_etag = isset( $_SERVER['HTTP_IF_NONE_MATCH'] ) ? stripslashes( $_SERVER['HTTP_IF_NONE_MATCH'] ) : false;

if( ! isset( $_SERVER['HTTP_IF_MODIFIED_SINCE'] ) )
	$_SERVER['HTTP_IF_MODIFIED_SINCE'] = false;

$client_last_modified = trim( $_SERVER['HTTP_IF_MODIFIED_SINCE'] );
// If string is empty, return 0. If not, attempt to parse into a timestamp
$client_modified_timestamp = $client_last_modified ? strtotime( $client_last_modified ) : 0;

// Make a timestamp for our most recent modification...
$modified_timestamp = strtotime($last_modified);

if ( ( $client_last_modified && $client_etag )
	? ( ( $client_modified_timestamp >= $modified_timestamp) && ( $client_etag == $etag ) )
	: ( ( $client_modified_timestamp >= $modified_timestamp) || ( $client_etag == $etag ) )
	) {
	status_header( 304 );
	exit;
}

// If we made it this far, just serve the file
readfile( $file );</pre>

Nếu người dùng không đăng nhập, mẫu đăng nhập trang web của bạn sẽ được hiển thị.  Sau khi người dùng đăng nhập, họ sẽ được chuyển hướng trở lại tập tin và có thể tải xuống ngay bây giờ.

Bạn sẽ tìm được thông tin hữu ích liên quan tới người dùng tải tệp lên trong  \wp-includes\ms-files.php cài đặt wordpress của bạn, nhưng một trong số đó là dành cho multisite và w / o đăng nhập kiểm tra và chuyển hướng.

Tùy thuộc vào lượng truy cập bạn có, có thể tùy chỉnh để tích hợp tốt hơn với máy chủ của bạn, ví dụ như  X-Accel-Redirect hoặc  X-Sendfile tiêu đề.

Việc bảo vệ nguồn tài nguyên website là rất quan trọng, bởi vậy bạn cần thực hiện xây dựng công cụ bảo vệ một cách tốt nhất mà vẫn tối ưu được website, mang đến sự tiện dụng cho người dùng.

Xem thêm: 9 Plugin tốt nhất cho SEO mà bạn nên sử dụng

Tin mới nhất

Dù bạn dùng phiên bản WordPress với lưu lượng truy cập cao hay một blog nhỏ trên máy chủ chia...

VR PLUS (https://vrplus.vn/ ) Là một trong những dự án do Lamvt thực hiện trong thời gian gần đây. Như...

Trong một năm qua, chúng tôi đã xuất bản khoảng 79 bài viết SEO trên blog Ahrefs. Các bài viết...

Khám phá kĩ thuật viết nội dung SEO Nếu không có SEO, nội dung của bạn có thể bị chìm...

Các website về lĩnh vực làm đẹp cần phải có một thiết kế (design) hấp dẫn và bắt mắt. Điều...

Tin được yêu thích

Như đã nói, phần mềm chỉnh sửa video đang ngày càng chứng tỏ được tầm quan trọng của mình, nhất...

Nhiều bạn thắc mắc là sau khi cài đặt Plugin cho Google AMP thì làm thế nào để kiểm tra,...

Các trang web giáo dục và các trang web của chính phủ có một lợi thế hơn trong bảng xếp...

Nội dung là một trong 3 tiêu chí quan trọng để google đánh giá thứ hạng tìm kiếm cho website...

Thẻ <span> </span> Thẻ <span> là thẻ khá đặc biệt trong HTML, theo mặc định thì thẻ <span> được thêm...

Khách đang xem

  1. Bạn muốn tìm kiếm một cái gì đó tốt, thông minh, hữu dụng hơn hầu hết mọi người tìm kiếm...
    6 giây trước
  2. Hai cô gái HotGirl Chụp ảnh ở Tuyệt tình cốc Thủy Nguyên, Hải Phòng, Việt Nam đã gây bão mạng...
    26 giây trước
  3. Facebook là mạng xã hội lớn nhất hiện nay, đây cũng là công cụ tuyệt vời để để quảng cáo...
    8 giây trước
  4. Từ trước tới nay, SEO vẫn luôn được xem là một chủ đề khó khăn. Chỉ trong một phút bạn...
    17 giây trước
  5. Traffic là một chỉ số quan trọng để đánh giá hiệu quả công việc SEO, và đóng một vai trò...
    19 giây trước
  6. Trong thời đại hiện nay, website là một phương tiện khá phổ biến và được nhiều người dùng, nó giúp...
    28 giây trước
  7. SEO là gì? Làm thế nào viết bài chuẩn SEO cho người mới bắt đầu? Bài viết hôm nay sẽ...
    8 giây trước
  8. Phần mềm chỉnh sửa Video miễn phí cho Youtube đang được giới trẻ ngày càng quan tâm, đặc biệt là...
    14 giây trước
  9. Ở bài trước chúng ta đã tìm hiểu các cặp thẻ và thuộc tính của chúng, hôm nay chúng ta...
    6 giây trước
  10. URL là đại diện của một website. Đại diện của doanh nghiệp trên cộng đồng mạng. Vì thế nó cần...
    20 giây trước