ป้องการการ Hotlink ใน Apache ด้วย mod_rewrite
ปัญหา การขโมยแบนด์วิดธ์จากเว็บไซท์อื่น โดยการทำการ hot-link มารูปในเว็บไซท์ที่เราทำนั้น เป็นการเพิ่มภาระและใช้ทรัพยากรของเรา โดยที่เราเป็นผู้เสียผลประโยชน์ การแก้ปัญหานี้ในระบบ *nix ที่ใช้งาน apache สามารถทำได้โดยความต้องการเพื่อใช้งาน
- apache ที่ติดตั้ง mod_rewrite
- apache อนุญาตใช้งาน AllowOverride
- apache อนุญาตใช้งาน FollowSymLinks
HTACCESS
- RewriteEngine on
- RewriteCond %{HTTP_REFERER} !^$
- RewriteCond %{HTTP_REFERER} !^(http://|https://)(www.)?(modoeye.com).*$ [NC]
- RewriteRule \.(jpe?g|gif|bmp|png)$ - [F]
จากโค๊ดข้างต้นสามารถอธิบายได้ดังนี้
HTACCESS
- RewriteEngine on
เป็นการสั่งให้ module mod_rewrite เริ่มทำงาน
HTACCESS
- RewriteCond %{HTTP_REFERER} !^$
เป็นการตรวจสอบค่าใน HTTP_REFERER ว่ามีค่าว่าง
HTACCESS
- RewriteCond %{HTTP_REFERER} !^(http://|https://)(www.)?(modoeye.com).*$ [NC]
เป็น การตรวจสอบค่าใน HTTP_REFERER ว่ามีค่าไม่ตรงกับ http://www.modoeye.com, https://www.modoeye.com, http://modoeye.com, https://modoeye.com โดย NC เป็นการระบุว่าตรวจสอบแบบไม่สนใจตัวพิมพ์ใหญ่หรือพิมพ์เล็ก (non case-sensitive:case-insensitive)
HTACCESS
- RewriteRule \.(jpe?g|gif|bmp|png)$ - [F]
เป็น การบอกว่าถ้ามีการเรียกมายังไฟล์ที่มี extension เป็น jpg, jpeg, gif, bmp และ png ให้ไม่มีการส่งข้อมูลใดๆไป ส่วน F เป็นการส่งเพียง header รหัส 403 (Forbidden) ไปยัง browser
หากเราต้องการเตือนให้ปลายทางรูปว่า เรารู้นะว่าคุณขโมยรูปของเรา เราสามารถส่งรูปที่เราต้องการไปยังปลายทางได้โดยการระบุรูปที่ต้องการ โดยจะได้โค๊ดทั้งหมดดังนี้
HTACCESS
- RewriteEngine on
- RewriteCond %{HTTP_REFERER} !^$
- RewriteCond %{HTTP_REFERER} !^(http://|https://)(www.)?(modoeye.com).*$ [NC]
- RewriteRule \.(jpe?g|gif|bmp|png|wav)$ images/steal.jpg [L]
ส่วนที่เปลี่ยนแปลงคือ
HTACCESS
- RewriteRule \.(jpe?g|gif|bmp|png|wav)$ images/steal.jpg [L]
เป็น การบอกว่ามีการเรียกมายังไฟล์ที่มี extension เป็น jpg, jpeg, gif, bmp และ png ให้ทำการส่งภาพ images/steal.jpg ไปแทน โดย L เป็นการบอกว่าเป็นกฎข้อสุดท้าย (Last rule)
Thanks : Sheroku
ไม่มีความคิดเห็น:
แสดงความคิดเห็น