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í 15++ Năm (Từ 2006 đến Nay)

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

5/5 - (2 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

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...

Core Web Vitals được đo lường như thế nào? Làm thế nào để bạn biết các bản sửa lỗi đã...

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. 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ò...
    15 giây trước
  2. Kiếm tiền bằng cách làm việc, nhưng việc làm đó có thu hút bạn? Nó mất nhiều thời gian và...
    8 giây trước
  3. Nếu bạn đang cố gắng xây dựng liên kết, bạn chắc chắn phải tìm ra vài cách để tăng lượng...
    8 giây trước
  4. 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...
    1 giây trước
  5. Tại sao bạn nên tạo dấu tích xám (tích xanh) Facebook? Làm thế nào trang kinh doanh Facebook nhận được dấu...
    26 giây trước
  6. Liquid hand wash, nước rửa tay khô, hay dung dịch diệt khuẩn, Handrub Formulations công thức pha chế dung dịch...
    11 giây trước
  7. Có một câu nói mà rất nhiều chuyên gia SEO trên thế giới hay sử dụng đó là Its Depends,...
    21 giây trước
  8. Có một số công cụ để thử tốc độ load trang web như là Google PageSpeed ​​Insights, WebPageTest hay KeyCDN,...
    11 giây trước
  9. Những yếu tố để đạt thứ hạng cao trong SEO trong năm 2018 SEO là gì? Tối ưu hóa công...
    30 giây trước
  10. Chủ đề cho bài đăng trên blog này được lấy cảm hứng từ một tài liệu nội bộ mà chúng...
    12 giây trước