Nội dung bài viết
Giới thiệu
Hotlinking là hành động nhúng trực tiếp nội dung (như hình ảnh, video, tài liệu) từ một website khác mà không tải xuống và lưu trữ trên máy chủ của mình. Điều này có nghĩa là khi trang web của một người nào đó hiển thị một hình ảnh từ trang của bạn, nội dung đó vẫn được tải từ máy chủ của bạn thay vì của họ.
Tác hại của Hotlink:
- Tốn băng thông: Khi trang web khác nhúng nội dung từ trang của bạn, máy chủ của bạn phải chịu chi phí băng thông để cung cấp dữ liệu, dù bạn không nhận được bất kỳ lợi ích nào từ điều này.
- Ảnh hưởng hiệu suất: Nếu có nhiều website hotlink nội dung của bạn, nó có thể làm giảm hiệu suất máy chủ, dẫn đến việc website của bạn bị chậm hoặc quá tải.
- Mất quyền kiểm soát nội dung: Bạn có thể không biết ai đang sử dụng nội dung của mình hoặc nội dung đó đang được hiển thị trong ngữ cảnh nào.
Các cách chặn hotlink
Cách 1: Chặn Hotlink bằng .htaccess
Đây là cách đơn giản và được áp dụng nhiều nhất, để áp dụng cách này máy chủ web của bạn phải được hỗ trợ file .htaccess như Apache, Openlitespeed, LiteSpeed Enterprise…
Các bạn truy cập vào thư mục Document root, chọn chỉnh sửa file .htaccess
Tiếp đó bạn thêm đoạn cấu hình này vào đầu file.
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^https://(www\.)?damtrungkien.com/ [NC]
RewriteCond %{HTTP_REFERER} !^https://(www\.)?google.com/ [NC]
RewriteCond %{HTTP_REFERER} !^https://(www\.)?bing.com/ [NC]
RewriteCond %{HTTP_REFERER} !^https://(www\.)?yahoo.com/ [NC]
RewriteRule \.(jpg|jpeg|png|gif)$ - [F,NC,L]
Trong đó:
- RewriteCond %{HTTP_REFERER} !^$: Điều kiện này cho phép các yêu cầu không có HTTP_REFERER.
- RewriteCond %{HTTP_REFERER} !^https://(www\.)?damtrungkien.com/ [NC]: Điều kiện này cho phép website của bạn được sử dụng các liên kết (bạn nhớ thay damtrungkien.com bằng tên miền của bạn).
- Các dòng khác cho phép Google, Bing, Yahoo để đảm bảo hình ảnh của bạn vẫn hiển thị trên công cụ tìm kiếm. Bạn có thể chỉnh sửa lại theo nhu cầu của mình.
- RewriteRule \.(jpg|jpeg|png|gif)$ – [F,NC,L]: Cấm các hình ảnh định dạng như .jpg, .jpeg, .png, .gif từ các trang web khác.
2. Chặn Hotlink bằng Nginx
Nếu website của bạn đang sử dụng webserver Nginx (không hỗ trợ file .htaccess), thì bạn có thể thêm cấu hình sau vào file cấu hình vhost của website. Thường đường dẫn sẽ là: /etc/nginx/sites-available/example.com
location ~* \.(jpg|jpeg|png|gif)$ {
valid_referers none blocked example.com *.example.com;
if ($invalid_referer) {
return 403;
}
}
Trong đó:
- valid_referers: Chỉ định các tên miền được phép nhúng hình ảnh (ví dụ: damtrungkien.com và *.damtrungkien.com )
- if ($invalid_referer): Chặn các yêu cầu không hợp lệ và trả về mã lỗi 403 Forbidden.
Kiểm tra kết quả sau khi chặn
Ví dụ ở đây mình đang phát hiện có một website đang sử dụng trái phép liên kết hình ảnh trên website của mình. Và mình đã sử dụng cách cấu hình chặn Hotlink thông qua .htaccess và bên dưới là kết quả sau khi chặn.
- Trước khi chặn
- Sau khi chặn
Các bạn có thể thấy các liên kết ảnh của website mình ban đầu được website kia sử dụng có mã là 200 (tức là được phép truy cập). Và sau khi mình cấu hình chặn Hotlink thì các liên kết ảnh đã trả về mã 403 và không thể get được nữa, lúc này hình ảnh trên website kia đã bị lỗi và không hiển thị được.
Tổng kết
Như vậy có thể hiểu hotlink là một hình thức “sử dụng miễn phí” tài nguyên của người khác khi chưa được cho phép, gây tốn băng thông và ảnh hưởng đến hiệu suất của website bị sử dụng liên kết. Hy vọng qua bài viết này, các bạn có thể xử lý và hạn chế được tình trạng trên , từ đó giúp máy chủ và website luôn hoạt động ổn định.!
Chúc các bạn thực hiện thành công.!