يعد أمان WordPress أحد أكثر العوامل التي تم تقويضها بين المدونين المبتدئين. في تثبيت WordPress غير الخاضع للإشراف ، هناك عدد غير قليل من الثغرات الأمنية المحتملة التي تُترك دون مراقبة. تشرح معظم دروس تثبيت WordPress طريقة سريعة وسهلة لنشر WordPress في دقائق. لكنهم يفتقدون بعض العوامل الأمنية المهمة. على سبيل المثال ، يعتبر تصفح الدليل واستخدام اسم المستخدم “admin” ثغرات أمنية خطيرة. سنلقي اليوم نظرة على 10 مقتطفات من كود htaccess والتي ستساعد في تحسين أمان مدونة WordPress الخاصة بك. قبل أن نبدأ ، دعنا نلقي نظرة سريعة على ملف htaccess.
ما هو ملف htaccess؟
ملف htaccess هو ملف تكوين اختياري لخادم الويب Apache لتفسيره لكل دليل. يمكنك تخزين إعدادات مختلفة في هذا الملف مثل: حماية دليل بكلمة مرور ، وحظر عناوين IP ، وحظر ملف أو مجلد من الوصول العام ، وما إلى ذلك. تقليديا ، يوجد ملف .htaccess في دليل تثبيت WordPress الأساسي. يقوم بتخزين بنية الرابط الثابت بشكل افتراضي.
نصيحة: قبل أن تبدأ بالبرنامج التعليمي ، تأكد من الاحتفاظ بنسخة احتياطية من ملف htaccess الحالي (إن وجد) في خدمة التخزين السحابي مثل Dropbox. هذا للرجوع إلى آخر ملف htaccess يعمل معروف ، إذا كان مقتطف شفرة معين يكسر موقعك. هيا نبدأ.
1. حظر الروبوتات السيئة
أحد أفضل استخدامات ملف .htaccess هو قدرته على رفض عدة عناوين IP من الوصول إلى موقعك. يكون هذا مفيدًا عند حظر مرسلي البريد العشوائي المعروفين والأصول الأخرى للوصول المشبوه أو الضار. الكود هو:
# Block one or more IP address.
# Replace IP_ADDRESS_* with the IP you want to block
<Limit GET POST>
order allow,deny
deny from IP_ADDRESS_1
deny from IP_ADDRESS_2
allow from all
</Limit>
حيث IP_ADDRESS_1 هو عنوان IP الأول الذي تريد منعه من الوصول إلى موقعك. يمكنك إضافة العديد من عناوين IP التي تريدها. بغض النظر عن وكلاء المستخدم (المتصفحات) التي تستخدمها عناوين IP هذه ، فلن يتمكنوا من الوصول إلى ملف واحد من خادمك. سيرفض خادم الويب تلقائيًا كل الوصول.
2. تعطيل استعراض الدليل
يعد هذا أحد أكثر العيوب الأمنية التي تم تقويضها في موقع WordPress. بشكل افتراضي ، يتيح خادم الويب Apache تصفح الدليل. هذا يعني أن جميع الملفات والمجلدات الموجودة داخل الدليل الجذر (يسمى أحيانًا الدليل الرئيسي) لخادم الويب يمكن إدراجها ويمكن للزائر الوصول إليها. لا تريد ذلك لأنك لا تريد أن يتصفح الأشخاص تحميلات الوسائط الخاصة بك أو المظهر أو ملفات المكونات الإضافية.
إذا اخترت عشوائيًا 10 مواقع ويب شخصية أو تجارية تعمل بنظام WordPress ، فلن يتم تعطيل تصفح الدليل في 6-8 منها. يتيح ذلك لأي شخص التعرف بسهولة على مجلد wp-content / uploads أو أي دليل آخر لا يحتوي على ملف index.php الافتراضي . في الواقع ، لقطة الشاشة التي تراها مأخوذة من أحد مواقع عميلي ، قبل أن أوصيك بالإصلاح. مقتطف التعليمات البرمجية لتعطيل تصفح الدليل:
# Disable directory browsing
Options All -Indexes
3. السماح فقط بالملفات المحددة من محتوى wp
كما تعلم ، يحتوي مجلد wp-content على معظم السمات والمكونات الإضافية وجميع عمليات تحميل الوسائط. أنت بالتأكيد لا تريد أن يصل الناس إليه دون قيود. بالإضافة إلى تعطيل تصفح الدليل ، يمكنك أيضًا رفض الوصول إلى جميع أنواع الملفات وحفظ القليل منها. في الأساس ، يمكنك إلغاء حظر الملفات بشكل انتقائي مثل JPG و PDF و DOCX و CSS و JS وما إلى ذلك ورفضها من الباقي. للقيام بذلك ، الصق مقتطف الشفرة هذا في ملف htaccess.
# Disable access to all file types except the following
Order deny,allow
Deny from all
<Files ~ ".(xml|css|js|jpe?g|png|gif|pdf|docx|rtf|odf|zip|rar)$">
Allow from all
</Files>
يجب عليك إنشاء ملف .htaccess جديد مع الكود ولصقه في مجلد wp-content . لا تضع هذا في دليل التثبيت الأساسي – وإلا فلن يعمل. يمكنك أيضًا إضافة أي نوع ملف إلى القائمة عن طريق إلحاق “|” بعد “رر”. تحتوي القائمة أعلاه على الملفات الضرورية – XML و CSS و JavaScript وتنسيقات الصور والمستندات الشائعة وأخيرًا تنسيقات الأرشيف الأكثر استخدامًا.
4. تقييد الوصول إلى wp-include
و -يتضمن الفسفور الابيض مجلد يحتوي فقط على الملفات التي هي الضرورة القصوى لتشغيل النسخة الأساسية من وورد – واحدة من دون أي الإضافات أو الموضوعات. تذكر أن السمة الافتراضية لا تزال موجودة في دليل wp-content / theme . وبالتالي ، يجب ألا يطلب أي زائر (بما في ذلك أنت) الوصول إلى محتوى مجلد wp-include . يمكنك تعطيل الوصول باستخدام مقتطف الشفرة التالي:
# Block wp-includes folder and files
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^wp-admin/includes/ - [F,L]
RewriteRule !^wp-includes/ - [S=3]
RewriteRule ^wp-includes/[^/]+\.php$ - [F,L]
RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F,L]
RewriteRule ^wp-includes/theme-compat/ - [F,L]
</IfModule>
5. السماح فقط لعناوين IP المحددة بالوصول إلى wp-admin
و الفسفور الابيض بين المشرف يحتوي المجلد على الملفات المطلوبة لتشغيل لوحة القيادة وورد. في معظم الحالات ، لا يحتاج زوارك إلى الوصول إلى لوحة تحكم WordPress ، إلا إذا كانوا يريدون تسجيل حساب. إجراء أمني جيد هو تمكين عدد قليل فقط من عناوين IP المحددة للوصول إلى مجلد wp-admin . يمكنك السماح لعناوين IP للأشخاص الذين يحتاجون إلى الوصول إلى لوحة معلومات WordPress – المحررين والمساهمين والمسؤولين الآخرين. يسمح مقتطف الشفرة هذا فقط لعناوين IP الثابتة بالوصول إلى مجلد wp-admin ويمنع الوصول إلى بقية العالم.
# Limit logins and admin by IP
<Limit GET POST PUT>
order deny,allow
deny from all
allow from 302.143.54.102
allow from IP_ADDRESS_2
</Limit>
تأكد من إنشاء ملف htaccess جديد ولصقه في مجلد wp-admin وليس في دليل التثبيت الأساسي. إذا كان هذا هو الأخير ، فلن يتمكن أحد سواك من تصفح موقعك – ولا حتى محركات البحث! أنت بالتأكيد لا تريد ذلك. زوجان من عيوب هذا المقياس كما يلي:
- إذا كان موقعك يسمح بتسجيل مستخدم جديد أو يروج له ، فسيكون من المستحيل تقريبًا تتبع عدد المستخدمين. على سبيل المثال في WPExplorer ، إذا كنت ترغب في تنزيل سماتنا المجانية الرائعة ، فعليك التسجيل.
- الأشخاص الذين لديهم عناوين IP ديناميكية (معظمهم من مستخدمي النطاق العريض ADSL الذين يستخدمون بروتوكولات PPP أو PPPoE) قاموا بتغيير عناوين IP الخاصة بهم ، في كل مرة يقومون بتسجيل الخروج وتسجيل الدخول إلى مزود خدمة الإنترنت الخاص بهم. بالتأكيد سيكون من غير العملي تتبع كل عناوين IP هذه وإضافتها إلى ملف htaccess.
- النطاق العريض للأجهزة المحمولة: سواء كنت تستخدم 3G أو 4G ، فإن عنوان IP الخاص بك يعتمد على برج الهاتف الخلوي الحالي الذي تتصل به. لنفترض أنك تسافر – سيتغير عنوان IP الخاص بك باستمرار مع كل بضعة أميال تقطعها من الأصل. مرة أخرى ، يعد تتبع ملف htaccess شبه مستحيل.
- نقاط اتصال Wi-Fi العامة: يعد استخدام بيانات الاعتماد عند الاتصال بالإنترنت باستخدام نقطة اتصال Wi-Fi عامة أمرًا محظورًا ، نظرًا لأن الطفل الذي لديه برنامج صغير يمكنه استخراج كل حرف تكتبه. ناهيك عن أن كل نقطة اتصال Wi-Fi سيكون لها عنوان IP فريد.
لحسن الحظ ، يمكن تصحيح كل هذه العيوب (باستثناء الأول) باستخدام VPN. إذا قمت بتعيين VPN الخاص بك للاتصال باستخدام عنوان IP واحد فقط ، فيمكنك فقط إضافته إلى ملف htaccess الخاص بك ، وسيتم حل جميع مشاكلك.
6. حماية ملف wp-config.php و. htaccess من الجميع
و الفسفور الابيض بين ملف config.php ملف يحتوي على معظم أوراق اعتماد الوصول حساسية الموقع وورد الخاص بك. يحتوي على اسم قاعدة البيانات وبيانات اعتماد الوصول والعديد من البيانات الهامة الأخرى ، من بين إعدادات أخرى. لا تريد تحت أي ظرف من الظروف أن يبحث الآخرون في هذا الملف. وبالطبع ، تريد تعطيل الوصول العام إلى مصدر كل هذا الأمان – ملف .htaccess نفسه. يمكنك تعطيل الوصول إلى wp-config.php بهذا الكود التالي:
# Deny access to wp-config.php file
<files wp-config.php>
order allow,deny
deny from all
</files>
لرفض الوصول إلى جميع ملفات htaccess (تذكر أن بعضها قد يكون موجودًا في wp-admin ومجلدات أخرى) ، استخدم مقتطف الشفرة هذا:
# Deny access to all .htaccess files
<files ~ "^.*\.([Hh][Tt][Aa])">
order allow,deny
deny from all
satisfy all
</files>
7. رفض الربط الساخن للصورة
يعد هذا أحد أروع عمليات اختراق ملفات .htaccess ، حيث يرسل كاشطات المحتوى التي تعمل بذيلها بين أرجلها. عندما يستخدم شخص ما صورة موقعك ، يتم استهلاك النطاق الترددي الخاص بك وفي معظم الأحيان ، لا يُنسب لك الفضل في ذلك. يعمل مقتطف الشفرة هذا على التخلص من هذه المشكلة وإرسال هذه الصورة عند اكتشاف ارتباط سريع.
# Prevent image hotlinking script. Replace last URL with any image link you want.
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourwebsite.com [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourotherwebsite.com [NC]
RewriteRule \.(jpg|jpeg|png|gif)$ http://i.imgur.com/MlQAH71.jpg [NC,R,L]
8. تمكين المتصفح التخزين المؤقت
يُعرف أيضًا باسم التخزين المؤقت من جانب العميل ، هذا الاختراق .htaccess مع تمكين خيارات التخزين المؤقت للمستعرض الموصى بها لموقع WordPress الخاص بك. يمكنك أيضًا استخدامه في مشاريع أخرى – مواقع HTML ، إلخ.
# Setup browser caching
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access 1 year"
ExpiresByType image/jpeg "access 1 year"
ExpiresByType image/gif "access 1 year"
ExpiresByType image/png "access 1 year"
ExpiresByType text/css "access 1 month"
ExpiresByType application/pdf "access 1 month"
ExpiresByType text/x-javascript "access 1 month"
ExpiresByType application/x-shockwave-flash "access 1 month"
ExpiresByType image/x-icon "access 1 year"
ExpiresDefault "access 2 days"
</IfModule>
9. إعادة التوجيه إلى صفحة الصيانة
عندما تقوم بترحيل مضيفات الويب أو إجراء بعض مهام الصيانة ، يوصى دائمًا بإنشاء ملف HTML ثابت “معطل للصيانة” لإبلاغ زوارك أن موقع الويب يخضع لعملية ترقية أو صيانة. ما عليك سوى إنشاء ملف Maintenance.html (أو أي اسم ملف آخر) وتحميله إلى دليل تثبيت WordPress الأساسي. الصق المقتطف التالي في ملف htaccess. بمجرد انتهاء العملية ، تأكد من حذف هذه الأسطر أو التعليق عليها للعودة إلى العملية الشاملة. يمكنك التعليق بإلحاق “#” في بداية كل سطر.
# Redirect all traffic to maintenance.html file
RewriteEngine on
RewriteCond %{REQUEST_URI} !/maintenance.html$
RewriteCond %{REMOTE_ADDR} !^123\.123\.123\.123
RewriteRule $ /maintenance.html [R=302,L]
10. صفحات الخطأ المخصصة
يمكنك أيضًا إنشاء ملف .htaccess لتكوين صفحات خطأ مخصصة سهلة الاستخدام لأخطاء مثل 403 و 404 و 500. بمجرد إعداد صفحة الخطأ – دعنا نقول error.html ، قم بتحميله إلى دليل تثبيت WordPress الأساسي. ثم أضف مقتطف الشفرة التالي إلى ملف htaccess. لتمكين صفحة الخطأ المخصصة:
# Custom error page for error 403, 404 and 500
ErrorDocument 404 /error.html
ErrorDocument 403 /error.html
ErrorDocument 500 /error.html
خاتمة:
لقد تعلمنا اليوم بعضًا من أروع طرق اختراق htaccess لتقوية موقع WordPress الخاص بك. أود أن أقترح عليك تجربة كل وحدة واحدة تلو الأخرى أثناء أخذ نسخة احتياطية من ملف .htaccess قبل وبعد اختبار كل وحدة. هذا لأن ملف htaccess بالغ الأهمية. قد يؤدي عدم وجود حرف “#” أو وضعه في غير مكانه “</IfModule>” إلى تدمير سلامة موقعك. إذا كنت تصل إلى لوحة معلومات WordPress الخاصة بك بشكل متكرر أثناء التنقل ، فمن المستحسن عدم تمكين عناوين IP الانتقائية لمجلد wp-admin الخاص بك .