Bảo mật đường dẫn font, không cho view source tải về

Khi bạn muốn chia sẻ font lên mạng, chỉ cho phép người dùng trả phí tải về, mặt khác vẫn hiển thị font demo cho mọi người cùng xem. Bạn sẽ tìm cách bảo mật đường dẫn khai báo font face. Bài viết này mình sẽ hướng dẫn cho các bạn cách không cho người khác tải font về.

Bảo mật đường dẫn font face
Bảo mật đường dẫn font face

Đầu tiên bạn sẽ tạo tập tin font.php và có nội dung như bên dưới:

defined( 'ABSPATH' ) || exit;

$nonce = $_GET['_wpnonce'] ?? '';

if ( ! wp_verify_nonce( $nonce, 'generate_font_url' ) ) {
	exit;
}

$ref = wp_get_referer();

if ( empty( $ref ) ) {
	exit;
}

$domain = Share_Fonts()->get_domain_name( home_url(), true );

if ( ! str_contains( $ref, $domain ) ) {
	exit;
}

$id = $_GET['id'] ?? '';

if ( empty( $id ) ) {
	$id = $_GET['font_id'] ?? '';
}

if ( empty( $id ) ) {
	$id = $_GET['file_id'] ?? '';
}

if ( empty( $id ) ) {
	exit;
}

$file = get_attached_file( $id );

if ( file_exists( $file ) ) {
	header( 'Content-Type: application/octet-stream' );
	header( 'Content-Disposition: inline; filename="' . basename( $file ) . '"' );
	header( 'Content-Length: ' . filesize( $file ) );
	readfile( $file );
	exit;
}

Bây giờ, đường dẫn font của bạn thay vì bạn để đường dẫn trực tiếp đến font hiện tại thì bạn dùng đường dẫn tập tin PHP bên trên.

Bạn có thể dùng tập tin bên trên với bất kỳ dự án PHP hoặc dự án website nào khác, chỉ cần thay đổi theo ngôn ngữ bạn lựa chọn với cùng ý tưởng nhé.

Plugin font demo
Plugin font demo

Bên dưới là hàm tạo đường dẫn font trên website WordPress:

public function generate_font_url( $file_id ) {
	$url = home_url();

	$params = array(
		'action' => 'generate_font_url',
		'id'     => $file_id
	);

	$url = wp_nonce_url( $url, $params['action'] );

	return add_query_arg( $params, $url );
}

Việc của bạn là dùng bộ lọc template_include để kiểm tra action trên URL, nếu action là generate_font_url thì include file font.php vào. Chúc bạn thành công.

5/5 - (4 bình chọn)

Lại Đình Cường

Tôi làm quen và phát triển WordPress từ năm 2008, cho đến nay thì đã có hơn 13 năm kinh nghiệm, thật không thể tin được. Tôi có đam mê và dành nhiều thời gian làm việc với WordPress mỗi ngày, hiện tại tôi đang phát triển giao diện và plugin cho WordPress.

Nếu bạn đang cần người làm trang web bằng WordPress? Hãy liên hệ với tôi ngay để được tư vấn nhé.