Anti Leech

พอดีนั่งดู log file แล้วเห็นว่ามีคนแอบเอาภาพเราไปใช้นี่นา ซึ่งจริงๆ แล้วผมไม่ได้ซีเรียสอะไรหรอกครับ แต่แค่อยากลองหาอะไรทำสนุกๆ ดูว่าเราจะหาวิธีป้องกันได้ยังไงบ้าง

ลองค้นๆ ดูแล้วก็พบว่าตัวช่วยที่ดีตัวหนึ่งก็คือ .htaccess และ Rewrite module ของ Apache นี่เอง

วิธีการง่ายๆ คือสร้างไฟล์ชื่อ .htaccess แล้วใส่คำสั่งของ Rewrite module ไว้ข้างใน
ดูตัวอย่างเลยก็แล้วกันครับ

1. วิธีนี้คือป้องกันไม่ให้ใครแอบเรียกไฟล์รูปภาพที่มีนามสกุล jpg|jpeg|gif|png|bmp ของเราไปใช้ โดยเมื่อภาพเหล่านี้ถูกเรียกใช้จากเว็บอื่น ภาพที่ปรากฎจะเป็น dot.gif แทน นอกจากนี้จะไม่สามารถเรียกไฟล์นั้นโดยตรงได้ด้วย เช่น จะเรียก http://my.diary.in.th/images/test.jpg ไม่ได้


RewriteEngine on
RewriteCond %{HTTP_REFERER} !^http://diary.in.th/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://diary.in.th$ [NC]
RewriteCond %{HTTP_REFERER} !^http://my.diary.in.th/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://my.diary.in.th$ [NC]
RewriteCond %{REQUEST_URI} !^/dot.gif [NC]
RewriteRule .*.(jpg|jpeg|gif|png|bmp)$ http://my.diary.in.th/dot.gif [R,NC]

2. จากข้อที่ 1 หากต้องการให้เรียกดูไฟล์รูปภาพนั้นโดยตรงได้ด้วยก็ให้เพิ่มคำสั่งตัวเข้มเข้าไป


RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://diary.in.th/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://diary.in.th$ [NC]
RewriteCond %{HTTP_REFERER} !^http://my.diary.in.th/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://my.diary.in.th$ [NC]
RewriteCond %{REQUEST_URI} !^/dot.gif [NC]
RewriteRule .*.(jpg|jpeg|gif|png|bmp)$ http://my.diary.in.th/dot.gif [R,NC]

3. หากไม่ต้องการให้ redirect ไปที่เว็บอื่นเลย เช่น http://my.diary.in.th ก็ใช้คำสั่งต่อไปนี้


RewriteEngine on
RewriteCond %{HTTP_REFERER} !^http://diary.in.th/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://diary.in.th$ [NC]
RewriteCond %{HTTP_REFERER} !^http://my.diary.in.th/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://my.diary.in.th$ [NC]
RewriteRule .*.(jpg|jpeg|gif|png|bmp)$ http://my.diary.in.th/ [R,NC]

3. หากไม่ต้องการให้แสดงผลเป็นรูปภาพอื่นแทน แต่ให้ปฏิเสธการแสดงผลไปเลยก็ใช้คำสั่งต่อไปนี้


RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://diary.in.th/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://diary.in.th$ [NC]
RewriteCond %{HTTP_REFERER} !^http://my.diary.in.th/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://my.diary.in.th$ [NC]
RewriteRule .*.(jpg|jpeg|gif|png|bmp)$ – [F,NC]

แถมครับ หากเรามีไฟล์มีเดียต่างๆ ที่ไม่ต้องการป้องกันในทำนองเดียวกันนี้ เราก็สามารถทำได้เช่นกัน ดังตัวอย่างต่อไปนี้ครับ

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^http://diary.in.th/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://diary.in.th$ [NC]
RewriteCond %{HTTP_REFERER} !^http://my.diary.in.th/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://my.diary.in.th$ [NC]
RewriteRule .*.(mp3|mpeg|mpg|ram|rm|wma|wav|asx|wmv|avi|mov|zip|rar|exe)$ http://my.diary.in.th/ [R,NC]

[NC] = “No Case”, meaning match the url regardless of being in upper or lower case letters.
[R] = Redirect

Have fun! :mrgreen:

5 Comments

  1. ej 16 September 2007
  2. ej 16 September 2007
  3. W.p. 16 September 2007
  4. W.p. 18 September 2007
  5. ej 19 September 2007

Leave a Reply

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