- مدونة رشيد - http://www.rasheed-b.com -

شرح أوامر ملف htaccess لحماية الملفات

طلب مني بعض الزملاء توضيح قضية استعمال ملف htaccess لحماية الملفات في مواقعهم ولذالك تم اعداد هذا الموضوع. على أثر موضوعي الأخير عن لصوص النت [1] وصلتني رسالة من مجهول يتهمني بالأنانية والحقد بسبب ما كتبته. لا أريد أن أكتب المزيد عن هذه الظاهرة فقد قلت ما عندي ولكن تخيلوا معي هذا الموقف: حضرت الى بيتك مجموعة من الضيوف, هل انت ملزم باستقبالهم ؟ نعم, بل يجب عليك أيضا أن تحسن الضيافة وأنت تكرمهم. في المقابل حضرت مجموعة ضيوف عند فلان لا تعرفه, هل أنت ملزم باستقبالهم ؟ لا, واجب الضيافة ملقى على فلان. نفس الشيئ بالنسبة لمواقع الانترنت, كل صاحب موقع يهتم بموقعه وبزواره وهو غير ملزم بالاهتمام بزوار باقي المواقع التي لا يعرفها ولا توجد له صله بهم. اذاً أين الأنانية ؟ لم نقل أنّ نسخ المواضيع ممنوع بل طلبنا وضع رابط للموضوع الأصلي. اضافة الى ذالك كل موقع له باندويث محدّد, وهذا الباندويث مخصّص للموقع وزواره وهو غير مخصّص لكل من هبّ ودبّ لأنه ببساطة سينتهي الباندويث وسيتوقف الموقع عن العمل ناهيك عن موارد السيرفر (معالج, ذاكرة ..), كم سيتحمّل السيرفر ؟ هذا ليس سيرفر من سيرفرات جوجل ليتحمّل ملايين الطلبات !

أكمل قراءة بقية الموضوع لمشاهدة الشرح …

حماية الملفات

ملف htaccess هو عبارة عن ملف نضع به أوامر معينة لا تقتصر فقط على حماية روابط الملفات (Hotlinking) بل له وظائف أخرى غير ذالك. في هذا الموضوع سنتكلم عن بعض الأوامر المهمة الخاصة بحماية الروابط. سنقوم بعمل ملف جديد بالنوتباد ونحفظه بالاسم htaccess. (انتبه للنقطة-مهم جدا) وفي داخل هذا الملف نضع الأوامر التي نريدها من بين الأوامر التالية.

ملاحظة: اذا لم تظهر معك الأكواد بشكل سليم اضغط على Ctrl + F5

حماية الصور

هذا الكود يقوم بعمل وظيفتيتن:


RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www.)?rasheed-b.com(/)?.*$ [NC]
RewriteRule .(gif|GIF|jpg|JPG)$ /hotlinking/banned.gif [L,NC]

1. يمنع عرض الصور خارج موقعك.
2. يستبدل الصورة بأي صورة تختارها وهذه الصورة ستظهر في الموقع الذي استعمل صورك.

مثال: هنا [2] (مفضّل عمل رفرش بعد ان تفتح صفحة المثال)

نشاهد في المثال عدم ظهور الصورة المطلوبة وظهرت مكانها صورة التنبيه.

شرح طريقة الاستعمال:

بداية, ننسخ الكود ونضعه في ملف ال htaccess الذي تكلمنا عنه قبل قليل. اذا أردت أن تمنع الظهور الخارجي للصور الموجودة في مجلد معيّن فعليك أن تضع ملف ال htaccess داخل ذالك المجلد, بينما لو أردت أن تمنع الظهور الخارجي للصور الموجودة في موقعك كله فعليك أن تضع ملف ال htccess في المجلد الرئيسي لموقعك في ال public_html.

rasheed-b.com: تستبدله بدومين موقعك.

gif|GIF|jpg|JPG: امتداد الصور المحمية ويمكنك التعديل.

hotlinking/banned.gif
: رابط صورة التنبيه.

يمكنك تصميم صورة التنبيه التي ستظهر في المواقع الخارجية كما تشاء. مفضل ان تكون مقاساتها صغيرة وحجمها صغير أيضا. يمكنك تصميمها بأي شكل تريده, استعمل خيالك الواسع, قد تكون الصورة دعاية لموقعك وقد تكون رسالة توبيخ. هذه الصورة يجب أن تضعها على موقع آخر (لأنه منعنا ظهور أي صورة خارج الموقع وستكون من ضمنها صورة التنبيه أيضا ! ). لكن اذا أردت أن تكون هذه الصورة على موقعك أنصحك أن تقوم بعمل مجلد تسميه مثلا hotlinking وفي داخل هذا المجلد سنضع ملف htaccess وبه الأمر التالي والذي يعني أن جميع الصور والملفات داخل هذا المجلد (ومن ضمنها صورة التنبيه) يمكنها أن تظهر بأي موقع خارجي وهي غير محمية:


RewriteEngine off

الان, من يريد استعمال صورك يستطيع تحميلها ورفعها على مساحته لكنه لن يستطيع أن يستخدم مساحتك حتى يعرض الصور في موقعه.

حماية الملفات

هذا الكود يقوم بعمل وظيفتين:


RewriteEngine on
RewriteCond %{HTTP_REFERER} !^http://(www.)?rasheed-b.com/.*$ [NC]
RewriteRule .(rar|RAR|ZIP|zip)$ http://www.rasheed-b.com [R,L]

1. يمنع تحميل ملفات من خارج موقعك.
2. عندما يقوم شخص بمحاولة تحميل ملف محمي سيتم تحويله الى موقعك.

مثال: هنا [3]

عند الضغط على الرابط سيتم التحويل الى العنوان الذي تريده ومفضل ان يكون الصفحة الرئيسية لموقعك. لاحظ أنه عند محاولة تحميل الملف بواسطة (حفظ باسم) سيتم التحميل ولكن الملف سيكون فارغ وحجمه 34 كيلوبايت !

شرح طريقة الاستعمال:

كما شرحت لكم سابقاً, ننسخ الكود ونضعه في ملف ال htaccess بحيث اذا أردت أن تمنع تحميل الملفات المحمية الموجودة في مجلد معيّن فعليك أن تضع ملف ال htaccess داخل ذالك المجلد, بينما لو أردت أن تمنع تحميل جميع الملفات المحمية الموجودة في موقعك فعليك أن تضع ملف ال htccess في المجلد الرئيسي لموقعك في ال public_html.

rasheed-b.com: استبدله بدومين موقعك

rar|RAR|ZIP|zip: الملفات التي تريد حمايتها ويمكن التعديل عليها.

http://www.rasheed-b.com: رابط التحويل عند محاولة تحميل ملف محمي.

هذا الأمر مفيد بالذات للملفات الكبيرة والتي تستهلك باندويث كبير, تخيّل لو كان الملف مطلوب وانتشر الرابط بالمواقع, عندها سيتم استهلاك موارد كثيرة قد لا يتحملها السيرفر الموجود عليه موقعك. عند استعمالك هذا الكود لن يتم تحميل الملف من خارج موقعك وسوف يكون التحميل فقط من خلال موقعك. تريد تحميل الملف ؟ تفضل بزيارة الموقع ولا تسحب الملف من مكان اخر.

مواقع صديقة

بواسطة هذا الكود نقوم بعمل قائمة للمواقع الصديقة التي نسمح لها بعرض ملفاتنا عندهم.


RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://www.friendlysite1.com.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://friendlysite1.com.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.friendlysite2.com.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://friendlysite2.com.*$ [NC]

شرح طريقة الاستعمال:

ضع الكود في ملف ال htaccess وحدّد من خلاله ما هي المواقع الصديقة.

friendlysite1.com: موقع صديق.

friendlysite2.com: موقع صديق آخر.

هذا الكود مفيد عندما تريد ان يكون بينك وبين موقع اخر تعاون معيّن مثلا مع موقع اسلامي أو مع موقع FeedBurner [4] أو أي موقع آخر ترغب به. لاحظ هنا [5] مثلاً ظهور الصور في الموقع الصديق رغم تفعيل الحماية على الصور في مدونتي.

مواقع غير صديقة

بواسطة هذا الكود نقوم بعمل قائمة للمواقع الغير مرغوب بها والتي لن نسمح لها بعرض ملفاتنا عندهم.


RewriteEngine on
RewriteCond %{HTTP_REFERER} ^http://www.badsite1.com/ [OR]
RewriteCond %{HTTP_REFERER} ^http://badsite1.com/ [OR]
RewriteCond %{HTTP_REFERER} ^http://www.badsite2.com/ [OR]
RewriteCond %{HTTP_REFERER} ^http://badsite2.com/
RewriteRule .(gif|GIF|jpg|JPG|rar|RAR)$ http://www.rasheed-b.com [R,L]

شرح طريقة الاستعمال:

ضع الكود في ملف ال htaccess في المجلد الرئيسي لموقعك وحدّد من خلاله المواقع الغير مرغوب بها.

badsite1.com: موقع غير مرغوب به

badsite2.com: موقع اخر غير مرغوب به.

gif|GIF|jpg|JPG|rar|RAR: الملفات المحمية ويمكنك التعديل عليها.

www.rasheed-b.com: رابط التحويل عند محاولة تحميل ملف من موقع غير مرغوب به.

هذا الكود مفيد للتخلص من المواقع التي تستخدم صورك وملفاتك بكثرة ويسببون ضغط على سيرفر موقعك واستهلاك كبير للباندويث.

برامج آلية

هذا آخر كود تركته للنهاية لأنه طويل. هنالك برامج متنوعة (bots) يمكنها تحميل كل ما يصادفها في موقعك من ملفات بدون استثناء. هذه البرامج تسبب ضغط شديد على الموقع أثناء عملها. هنالك أيضاً عناكب سيئة. عناكب محركات البحث (جوجل … ) مرغوب بها لكن هنالك عناكب وظيفتها “سحب” الايميلات وما الى ذالك من مهام لا بارك الله فيها. القائمة التالية تحتوي على عدد لا بأس به من هذه البرامج وجدتها في موقع Webmasterworld [6] ويمكنك وضعها في ملف ال htaccess للاحتياط حتى تمنعها من الحاق الضرر في موقعك.


RewriteEngine On 
RewriteCond %{HTTP_USER_AGENT} ^BlackWidow [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Bot mailto:craftbot@yahoo.com [OR] 
RewriteCond %{HTTP_USER_AGENT} ^ChinaClaw [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Custo [OR] 
RewriteCond %{HTTP_USER_AGENT} ^DISCo [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Download Demon [OR] 
RewriteCond %{HTTP_USER_AGENT} ^eCatch [OR] 
RewriteCond %{HTTP_USER_AGENT} ^EirGrabber [OR] 
RewriteCond %{HTTP_USER_AGENT} ^EmailSiphon [OR] 
RewriteCond %{HTTP_USER_AGENT} ^EmailWolf [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Express WebPictures [OR] 
RewriteCond %{HTTP_USER_AGENT} ^ExtractorPro [OR] 
RewriteCond %{HTTP_USER_AGENT} ^EyeNetIE [OR] 
RewriteCond %{HTTP_USER_AGENT} ^FlashGet [OR] 
RewriteCond %{HTTP_USER_AGENT} ^GetRight [OR] 
RewriteCond %{HTTP_USER_AGENT} ^GetWeb! [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Go!Zilla [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Go-Ahead-Got-It [OR] 
RewriteCond %{HTTP_USER_AGENT} ^GrabNet [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Grafula [OR] 
RewriteCond %{HTTP_USER_AGENT} ^HMView [OR] 
RewriteCond %{HTTP_USER_AGENT} HTTrack [NC,OR] 
RewriteCond %{HTTP_USER_AGENT} ^Image Stripper [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Image Sucker [OR] 
RewriteCond %{HTTP_USER_AGENT} Indy Library [NC,OR] 
RewriteCond %{HTTP_USER_AGENT} ^InterGET [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Internet Ninja [OR] 
RewriteCond %{HTTP_USER_AGENT} ^JetCar [OR] 
RewriteCond %{HTTP_USER_AGENT} ^JOC Web Spider [OR] 
RewriteCond %{HTTP_USER_AGENT} ^larbin [OR] 
RewriteCond %{HTTP_USER_AGENT} ^LeechFTP [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Mass Downloader [OR] 
RewriteCond %{HTTP_USER_AGENT} ^MIDown tool [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Mister PiX [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Navroad [OR] 
RewriteCond %{HTTP_USER_AGENT} ^NearSite [OR] 
RewriteCond %{HTTP_USER_AGENT} ^NetAnts [OR] 
RewriteCond %{HTTP_USER_AGENT} ^NetSpider [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Net Vampire [OR] 
RewriteCond %{HTTP_USER_AGENT} ^NetZIP [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Octopus [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Offline Explorer [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Offline Navigator [OR] 
RewriteCond %{HTTP_USER_AGENT} ^PageGrabber [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Papa Foto [OR] 
RewriteCond %{HTTP_USER_AGENT} ^pavuk [OR] 
RewriteCond %{HTTP_USER_AGENT} ^pcBrowser [OR] 
RewriteCond %{HTTP_USER_AGENT} ^RealDownload [OR] 
RewriteCond %{HTTP_USER_AGENT} ^ReGet [OR] 
RewriteCond %{HTTP_USER_AGENT} ^SiteSnagger [OR] 
RewriteCond %{HTTP_USER_AGENT} ^SmartDownload [OR] 
RewriteCond %{HTTP_USER_AGENT} ^SuperBot [OR] 
RewriteCond %{HTTP_USER_AGENT} ^SuperHTTP [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Surfbot [OR] 
RewriteCond %{HTTP_USER_AGENT} ^tAkeOut [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Teleport Pro [OR] 
RewriteCond %{HTTP_USER_AGENT} ^VoidEYE [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Web Image Collector [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Web Sucker [OR] 
RewriteCond %{HTTP_USER_AGENT} ^WebAuto [OR] 
RewriteCond %{HTTP_USER_AGENT} ^WebCopier [OR] 
RewriteCond %{HTTP_USER_AGENT} ^WebFetch [OR] 
RewriteCond %{HTTP_USER_AGENT} ^WebGo IS [OR] 
RewriteCond %{HTTP_USER_AGENT} ^WebLeacher [OR] 
RewriteCond %{HTTP_USER_AGENT} ^WebReaper [OR] 
RewriteCond %{HTTP_USER_AGENT} ^WebSauger [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Website eXtractor [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Website Quester [OR] 
RewriteCond %{HTTP_USER_AGENT} ^WebStripper [OR] 
RewriteCond %{HTTP_USER_AGENT} ^WebWhacker [OR] 
RewriteCond %{HTTP_USER_AGENT} ^WebZIP [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Wget [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Widow [OR] 
RewriteCond %{HTTP_USER_AGENT} ^WWWOFFLE [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Xaldon WebSpider [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Zeus 
RewriteRule ^.* - [F,L]