Chặn lượt truy cập proxy với WordPress

Đây là viên đạn ma thuật, thêm qua functions.php hoặc plugin:

// block proxy visits
function shapeSpace_block_proxy_visits() {
	if (!is_user_logged_in()) {
		if (@fsockopen($_SERVER['REMOTE_ADDR'], 80, $errstr, $errno, 1)) {
			die('Proxy access not allowed');
		}
	}
}
add_action('after_setup_theme', 'shapeSpace_block_proxy_visits');

Như đã giải thích trong bài viết gốc, đoạn mã này không đủ để chặn tất cả các proxy, nhưng nó hoạt động rất tốt trong việc chặn RẤT NHIỀU proxy. Trong những năm qua, các dịch vụ proxy và tập lệnh đã phát triển như nấm về chức năng, độ phức tạp và hiệu quả. Vì vậy, thực sự không có một kỹ thuật plug-and-play một kích cỡ phù hợp với tất cả để chặn 100% tất cả các proxy. Tập lệnh này nhằm cung cấp cho nhà phát triển một cách đơn giản để loại bỏ nhiều loại dịch vụ proxy nhằm giải phóng tài nguyên quý giá cho lưu lượng truy cập hợp pháp.

Làm thế nào nó hoạt động?

Đây là logic cơ bản đằng sau kỹ thuật này:

  1. Kiểm tra xem người dùng hiện tại chưa đăng nhập vào WordPress
  2. Chặn yêu cầu nếu cổng 80 được mở trên máy từ xa
  3. Móc chức năng vào after_setup_theme của WP

Vì vậy, nó rất đơn giản về mặt logic, nhưng yêu cầu kết nối nhanh với máy từ xa. Đây là lý do tại sao kỹ thuật này được sử dụng tốt hơn như một giải pháp tạm thời, như được giải thích trong phần tiếp theo.

Ví dụ sử dụng

Tập lệnh này rất hay vì nó đơn giản và nhẹ nhất mà bạn có thể nhận được qua PHP (bạn có thể đạt được hiệu suất tốt hơn bằng cách sử dụng một trong các kỹ thuật .htaccess được liên kết ở đầu bài đăng này). Một ví dụ sử dụng hay: khi tôi nhận thấy các trang web của mình bị quét hoặc spam bởi một số d-bag tự động, tôi có thể đưa tập lệnh chặn proxy này vào functions.php để dập tắt cơn bão và tiết kiệm một số tài nguyên máy chủ. Sau một vài giờ, tôi có thể xóa tập lệnh mà không gặp bất kỳ phiền phức nào. Nó thực sự được sử dụng tốt nhất như một biện pháp ngăn chặn ngắn hạn thay vì giải pháp chặn proxy vĩnh viễn.

Update: send response headers

Nếu bạn nhận được các tiêu đề phản hồi không chính xác (ví dụ: nhận được 200 “OK” cho các trang 404 “Không tìm thấy”). Bạn có thể giải quyết bằng cách gửi tiêu đề mong muốn, chẳng hạn để gửi phản hồi 403 “Bị cấm” cho mọi yêu cầu proxy bị chặn:

// block proxy visits
function shapeSpace_block_proxy_visits() {
	if (!is_user_logged_in()) {
		if (@fsockopen($_SERVER['REMOTE_ADDR'], 80, $errstr, $errno, 1)) {

			header('HTTP/1.1 403 Forbidden'); // send response header
			die('Proxy access not allowed');
		}
	}
}
add_action('after_setup_theme', 'shapeSpace_block_proxy_visits');

Bạn có thể thay đổi tiêu đề thành bất kỳ phản hồi nào, v.v. Kiểm tra tài liệu PHP để biết thêm chi tiết.

Bình luận về bài viết này