Bảo vệ băng thông webblog của bạn bằng htaccess



Xin chào các bạn,

Hôm nay Việt Coding nói về một vấn đề ít nhiều đụng đến túi tiền của các bạn 🙂 Có thể bó gọn nó trong từ “hotlink”. Vậy hotlink là gì ? Việt Coding không dám giải thích bừa nên trích dẫn một bài viết trên mạng Internet:

Hotlink – Lợi hay hại!?

1. Hotlink là gì?

Hotlink là đặt link trực tiếp đến một file nào đó trên trang web của người khác. Đó có thể là file ảnh, file video, file mp3, vân vân và vân vân.

2. Cái lợi của hotlink

Rất tiện lợi trong việc… copy bài viết của người khác về trang web của mình. Không cần mất công upload ảnh, video, chỉ việc giữ nguyên link cũ. Tiết kiệm được không ít thời gian đâu.

3. Cái hại của hotlink

Lợi bất cập hại.

a. Hại cho người bị hotlink

Tại sao hotlink còn được gọi là bandwidth theft? Bởi vì khi đặt link trực tiếp tới file ảnh, video trên trang web của người khác, mỗi lần ai đó vào trang web của bạn, request sẽ được gửi thẳng tới server chứa trang web của người kia. Người có nội dung bị hotlink sẽ tốn băng thông một cách vô lý. Giả sử blog tớ một ngày có 200 visitor, nghĩa là khoảng 200 lần load một cái ảnh; mà ảnh đó bị hotlink ở trang web có 10000 visitor/ngày thì tự dưng băng thông tớ tốn gấp 6 lần mức hợp lý.

b. Hại cho người đi hotlink

File được (hay bị?) hotlink không nằm trên server của bạn, nói cách khác là không thuộc quyền quản lý của bạn. Điều gì sẽ xảy ra nếu server của trang web kia down? Các file bị hotlink đương nhiên sẽ không hiển thị được.

Đấy là còn nhẹ đấy. Nặng hơn thì đã có vài dẫn chứng nổi tiếng:

Dẫn chứng #1:

Hôm 4.12.2006, RSS Team của Microsoft đặt hotlink trên blog tới một ảnh trên Flickr mà không xin phép tác giả. Chủ nhân bức ảnh khi phát hiện ra điều đó đã thay thế bức ảnh gốc bằng một ảnh khác có nội dung “hơi bị nhạy cảm”. Hiển nhiên một bức ảnh kiểu như vậy hiện ra giữa một blog nghiêm túc thì không lấy gì làm đẹp đẽ lắm.

Dẫn chứng #2:

Vụ này liên quan đến profile trên myspace của ứng cử viên tổng thống Mỹ John McCain hồi tháng 3 năm ngoái. Bộ phận lo về thiết kế của profile sử dụng một template nổi tiếng của một designer khác mà không để credit đến tác giả. Tệ hơn là họ còn hotlink thẳng tới server của người này. Kết quả? Một dòng chữ như sau được chèn vào profile của John McCain:

Today I announce that I have reversed my position and come out in full support of gay marriage…particularly marriage between two passionate females.

Miễn bình luận.

4. Làm ơn đừng hotlink…

Trước khi bấm nút Create new post/Publish/whatever, hãy chắc chắn rằng bạn không chôm băng thông của ai đó khác bằng cách hotlink đến nội dung trên trang web của họ.

Bạn có thể down file của người đó về, upload lên server mình (ở đây xét trường hợp điều đó được tác giả cho phép).

Nếu là ảnh, bạn có thể fetch sang một dịch vụ image hosting nào đó kiểu như imageshack.

Hoặc bạn có thể sử dụng dịch vụ Image Redirection của imgred.

Từ internet.

Như vậy, nhìn về khía cạnh bạn là webmaster của một webblog nào đó thì rõ ràng hotlink là một việc có hại. Thử tưởng tượng ở mỗi bài viết có từ 3-5 bức ảnh minh hoạ (host trên hosting của bạn), mỗi bức ảnh trung bình 50 Kb. Một webblog nào khác copy nguyên xi bài viết đó của bạn. Bạn sẽ dễ dàng tính được cứ mỗi lượt truy cập vào webblog đó, “họ” sẽ tiết kiệm được từ 150-250 Kb băng thông (bandwidth) và đương nhiên số tiền tiết kiệm đó “họ” móc “gián tiếp” từ túi tiền của bạn. Họ có được content + visitor + thứ hạng, trong khi bạn chẳng được lại còn mất. Thử tưởng tượng webblog của họ có vài chục ngàn lượng truy cập/ngày thì bạn phải dốc hầu bao ra bao nhiêu trả cho nhà cung cấp host ?

Sau khi nảy ra ý định viết bài này, Việt Coding có ghé thăm blog của một số bạn bè như: eblogviet.com, minhmeo.info, hutruc.com, misaoblog.com,… đều thấy họ không có bật chức năng chống hotlink. Ví dụ:

eblogviet.com : http://cdn.eblogviet.com/wp-content/uploads/2010/03/google-certified-ad-networks-500x464.png
minhmeo.info : Dùng các hosting để upload image
hutruc.com : http://hutruc.com/wp-includes/images/smilies/60.gif
misaoblog.com : http://cdn.misaoblog.com/wp-content/uploads/2010/03/pubsubhubbub.jpg

Vậy làm sao để giải quyết vấn đề ? Chúng ta có nhiều cách:

– Dụng văn : Contact với webmaster của website nào đang “ăn cắp” băng thông của bạn, yêu cầu gỡ bỏ hoặc chuyển số hình ảnh về hosting của họ hoặc về đâu đó. Nếu họ hợp tác thì quá tốt. Nếu họ phớt lờ, hãy liên hệ với Google – gã khổng lồ này sẽ biết cần phải làm gì 🙂

Trường hợp chờ Google ra tay giúp bạn quá lâu, hoặc Google không giúp bạn ? Bạn có 2 cách tiếp theo:

– Chuyển toàn bộ dữ liệu (hình ảnh, tài liệu, nhạc, phim,…) lên cách dịch vụ lưu trữ trực tuyến để vừa giảm tải băng thông từ hosting của bạn và ngăn chặn kẻ xấu.

– Trường hợp bạn không muốn chuyển dữ liệu, vẫn muốn giữ tại hosting (để tiện quản lý, sao lưu,…) thì hãy sử dụng sức mạnh của tập tin .htaccess (Không dùng được với server Windows.) Vậy .htaccess là gì ?

-.htaccess là một tập tin được đặt trên các máy chủ hệ Unix (FreeBSD* Linux* Solaris* True64…) và .htaccess chỉ được cấu hình ở mức thư mục.
-Tập tin này có thể điều khiển được khá nhiều thứ* thậm chí thay đổi được cả thiết lập mặc định của máy chủ Apache.
-Nếu khai thác tốt .htaccess* ta có thể làm nhiều việc khá dễ dàng chỉ với vài dòng lệnh.

Trong phần bài viết dưới đây, Việt Coding sẽ hướng dẫn các bạn cách sử dụng .htaccess để bảo vệ tài nguyên trên webblog của bạn, ví dụ ở đây là WordPress (bạn hoàn toàn có thể áp dụng cho các ứng dụng web khác). Các bạn hãy xem nội dung tập tin .htaccess dưới đây:


RewriteEngine on

RewriteCond %{HTTP_REFERER} !^http://(www.)?vietcoding.com(/)?.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://(www.)?anhdung.info(/)?.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://(www.)?world.anhdung.info(/)?.*$ [NC]

RewriteRule .*.(gif|jpg|jpeg|bmp|png)$ http://img230.imageshack.us/img230/1272/hotlinkisforbidden.jpg [R,NC]

Trong khuôn khổ hạn hẹp của bài viết, Việt Coding xin phép không đi chi tiết về .htaccess mà chỉ gói gọn trong ý chính của bài viết là giúp bạn bảo vệ băng thông.

Nội dung tập tin .htaccess phía trên được chia làm 3 phần.

Phần 1: là dòng chỉ thị bật RewriteEngine.

Phần 2: là dòng chỉ thị, cho phép những domain này được phép truy xuất đến nguồn tài nguyên của bạn. Hãy thêm các domain thuộc bạn bè của bạn vào.

Phần 3: chỉ thị những loại tập tin nào cần bảo vệ. Ví dụ ở đây là các định dạng hình ảnh. Bạn có thể thêm vào các loại khác như zip, rar, doc, pdf, mp3, avi,… Liên kết phía sau, là liên kết hình bạn muốn hiển thị cảnh báo.

Ví dụ hiện tại Việt Coding đã bật chức năng chống hotlink lên. Nếu bất kỳ domain nào không nằm trong danh sách cho phép của Việt Coding mà có “nhã ý” xài ké hình ảnh sẽ chỉ hiện lên hình ảnh như thế này:

Chống hotlink từ Việt Coding

Một “cảnh báo” rất là đẹp đúng không nào, sẽ khiến cho nhiều “bàn tay đen” ê mặt đấy 😀

Cuối cùng, bạn chỉ cần copy đoạn code trên, chỉnh sửa cho phù hợp với webblog của bạn rồi upload lên thư mục chứa dữ liệu của bạn. Ví dụ: WordPress là /wp-content/uploads/

Sau đó thử truy cập dữ liệu từ một hosting khác hoặc chính từ localhost để kiểm tra xem có hiệu quả không nhé.

About Author

Tuấn Anh

Là một người đam mê lập trình, hiện tập trung mảng phát triển ứng dụng web dựa trên nền tảng của WordPress. Đồng thời, nhằm đạt sự trọn vẹn trong công việc freelance, tôi đang học đồ hoạ, để có thể tự mình thiết kế layout, logo và những thứ khác liên quan đến đồ họa. Mục tiêu vài năm tới: Tôi sẽ là Full Web Developer = Graphics Design + Coding. Vietcoding Blog viết về WordPress, chia sẻ kinh nghiệm, mẹo vặt, viết plugin, làm theme và ôm ấp ý tưởng viết một Web Application Framework dựa trên WordPress. Đồ hoạ là chuyên mục đang được chuẩn bị trong tương lai.



30 thoughts on “Bảo vệ băng thông webblog của bạn bằng htaccess

  1. Misao says:

    Rất hay. Thx bác nhé. 😀
    .-= Misao´s last blog ..Google PuSH và lợi ích khi áp dụng nó cho blog! =-.

  2. Trước đây khi dùng host của VN (5GB BW/1m) thì cũng mấy lần làm công việc này, tuy nhiên không thành công. Dùng host này 60GB nên cũng không quyết tâm làm cho ra lẽ. Đọc xong bài này về làm thử lần nữa xem sao.
    Thanks bác nhé 🙂
    .-= HuỳnhTrung@hutruc.com´s last blog ..Tự sao lưu bài viết WordPress sang blogger. =-.

  3. VPS của Việt Coding bandwidth đến 1000 GB/month mà vẫn áp dụng cách này. Lý do chính không phải là chống hotlink vì BW (từng ấy BW thì bao nhiêu website ăn cắp mới hết được :D) mà chống một số website copy bài vô tội vạ. Muốn copy cứ cóp nhưng ít ra phải cho nó ngồi edit lại cái hình :D. Chứ hổng lẽ công mình hì hục ngồi up cho nó cóp pi cái rẹt… Chịu sao thấu 😀
    .-= Việt Coding´s last blog ..Tạo toolbar mang dấu ấn riêng webblog của bạn cho trình duyệt =-.

    1. TS says:

      Bác ơi.. Băng thông nhiều zị cần chi phải hẹp hòi 😀
      Chỉ cần đóng dấu text vào tấm hình là có thể cho người ta copy vô tư rồi.

      1. Việt Coding chuyển về shared hosting ở VN lâu rồi bác 🙂

  4. Nạn copy ở Vn thì potay rồi, nó copy bài xong rồi edit lại một tý và không ghi nguồn gốc. Một link minh họa: hxxp://vnclick.biz/cafe/h%C6%B0%E1%BB%9Bng-d%E1%BA%ABn-dang-ky-host-mi%E1%BB%85n-phi.vnc (Nó để link TV nên dùng FF dễ vào hơn)
    .-= HuỳnhTrung@hutruc.com´s last blog ..Tự sao lưu bài viết WordPress sang blogger. =-.

  5. Tinh says:

    Cách này mình đã dùng để đối phó thực trang ăn cắp nội dụng của các autoblog nhưng xem ra chưa thực sử hiệu quả và đôi lúc rất mệt. Có thể sẽ nghiên cứu cách khác hoặc dùng CDN cũng hay.

    @Hutruc: Còn chuyện copy bài rồi edit và cho là của mình thì trước sau cũng không thành công, đừng quá câu nệ chuyện đó bác ah. Mình vẫn là mình, không ai có thể là mình đâu bác
    .-= Tinh´s last blog ..Facebook Lại Knock Out Google Tại Mỹ =-.

    1. Đồng ý với bác về quan điểm nếu chôm chỉa thì không sống lâu được, trước sau gì cũng bị loại thải khỏi cộng đồng 😀

      Cách chống ăn cắp băng thông rất đơn giản và hiệu quả. Chỉ cần upload file .htaccess lên thư mục cần chống là xong 😀

  6. Minh@Minh Meo's Blog says:

    Cá nhân mình thì thấy không cần thiết. Vì nếu “kẻ ăn cắp” muốn lấy thì không thiếu cách. Quan trọng là tạo bản sắc riêng cho mình để thu hút mọi người.

    Nếu bạn nào ngại dùng htaccess thì có thể vào Cpanel bật chức năng Hotlink Protection 🙂
    .-= Minh@Minh Meo’s Blog´s last blog ..1000 Farm-Fresh Web Icons từ Fatcow Web Hosting =-.

  7. Lê Hoàng says:

    Bài viết rất hay, cảm ơn anh. BW thì cũng không lo mấy, chỉ ghét cái nạn copy bài viết một cách dã man.

  8. LeHienTinh says:

    Em sài host free nên không dám sử dụng để chứa ảnh, toàn sử dụng flickr.com, cũng đang có ý định mua con host. mà chưa có tiền nên đành chờ contest hoặc đợi sinh nhật năm sau ông chú mua cho. 🙁
    .-= LeHienTinh´s last blog ..Cơ hội sở hữu Thesis 1.7 =-.

  9. Tran Quang says:

    em chỉ dám dùng free host để up ảnh thôi : upanh.com . Tháng vừa xong em cũng thấy lạ là BW 10 GB , web lại mới lập mà nhoàng cái hết mất 9GB tháng đó ! hjxx
    .-= Tran Quang´s last blog ..Flash Gallery Miễn Phí Hỗ Trợ Tự Động Tạo Thumbnail =-.

  10. Mình thử copy bài này vào một blog xài blogspot, vẫn thấy hình này http://vietcoding.com/wp-content/uploads/2010/03/hotlink.gif
    Không biết thủ thuật này có ổn không.
    .-= Bệnh tim mạch´s last blog ..Hiểu rõ hơn về thuốc trợ tim digoxin =-.

    1. Hì hì, thủ thuật này ổn chứ 🙂 Cái không ổn ở đây … chính là cái trình duyệt của bạn 🙂 Tôi nghĩ rằng bạn đã xem bài viết “Bảo vệ băng thông…” trước đó rồi mới copy cái link hình ra thử. Bạn lại thử trên chính cái trình duyệt mà bạn vừa xem bài đó. Lúc đó cái hình hotlink.gif đã được hiển thị trong bài viết (đương nhiên trên chính domain vietcoding.com là domain được “cấp phép” hiển thị hình) và lưu vào cache của trình duyệt. Khi bạn xem lại hình đó tải từ cache lên thì có gì đâu mà không được ? Bạn thử copy link hình sang một trình duyệt khác thử xem. Sẽ thấy ngay cái hình cảnh báo “đáng sợ” của Việt Coding 🙂

  11. đúng vậy, thử lại thì thấy không hiện nữa. Nếu không ngại mời bác add link
    .-= Bệnh tim mạch´s last blog ..Hiểu rõ hơn về thuốc trợ tim digoxin =-.

  12. Ý bác “add link” là trao đổi liên kết ạ ?
    .-= Việt Coding´s last blog ..Một số web/blog thuộc Việt Coding đồng loạt có PR =-.

  13. Ok, trao đổi liên kết với bác
    .-= Bệnh tim mạch´s last blog ..Hiểu rõ hơn về thuốc trợ tim digoxin =-.

    1. Hi bác,

      Tiếc là 2 web không cùng nội dung nên không trao đổi liên kết được 🙂 Cáo lỗi bác vậy 🙂

  14. Cảm ơn bạn đã có hướng dẫn này, mình đã thực hiện thành công

    1. Chúc mừng bạn đã bảo vệ thành công băng thông của mình 🙂

  15. Quang Tam says:

    Bài viết quá chi là hay và hữu ích cho ai dùng bw hạn hẹp, cũng như ảnh nguyên bản! Cảm ơn bác Việt coding nhé! e đang tìm hiểu về hosting vps bác có bài viết nào về nó khôg nhỉ:)

    1. Bạn dùng chức năng tìm kiếm trên blog của Việt Coding ấy ! Hình như có khoảng 2-3 bài về hosting. Hy vọng nó giúp ích cho bạn 🙂

  16. Blogxaydung says:

    Cảm ơn bác, bài viết rất hay.

  17. Nguyễn Phùng Hưng says:

    Bài này viết cũng khá lâu rồi, nhưng mình xin hỏi tí là khi mình up file .htaccess đó lên host rồi, vào thư mục upload rồi, nhưng đến khi mình dùng chức năng share link web lên các mạng xã hội đó thì nó lại hiện hình đã bị chặn… mặc dù là mình đã thêm các trang mạng xã hội vào diện cho phép rồi. Cái này là thế nào và xử lý sao cho hợp lý bác nhỉ?

    1. Nguyễn Phùng Hưng says:

      Ah quên, ý mình hỏi luôn là cái link cho phép đó, ví dụ:
      RewriteCond %{HTTP_REFERER} !^http://(www.)?abc.vn(/)?.*$ [NC]
      thì subdomain của nó là xyz.abc.vn có bị chặn ko hay là vẫn vào được nhỉ?

      1. Bỏ cái www ở đầu đi bạn ạ

        1. Nguyễn Phùng Hưng says:

          Bỏ cái www ở đầu rồi thì nó sẽ là
          RewriteCond %{HTTP_REFERER} !^http://(.)?abc.vn(/)?.*$ [NC]
          phải không nhỉ?
          Trả lời giúp mình nhé, thanks Ad nhiều.

    2. Các trang mạng xã hội, ví dụ facebook có rất nhiều sub domain, do đó có thể rơi vào trường hợp sub domain mà bạn chưa cho phép trong htaccess.


Got Something To Say:

Your email address will not be published. Required fields are marked *

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax

GENESIS FRAMEWORK