اگر وردپرس را مثل یک ساختمان در نظر بگیریم، افزونههای امنیتی مثل نگهبانهایی هستند که داخل ساختمان ایستادهاند؛ اما فایل .htaccess در واقع درِ ورودی ساختمان، سیستم قفلها و قوانین ورود و خروج است. یعنی قبل از اینکه اصلاً وردپرس اجرا شود، این فایل تصمیم میگیرد چه کسی اجازه عبور دارد و چه کسی نه.
بیشتر مدیران سایت فقط روی افزونههای امنیتی تمرکز میکنند، در حالی که کنترل واقعی و سطح پایین امنیت در سرور، از طریق htaccess انجام میشود. مزیت اصلی این روش این است که درخواست مخرب حتی به وردپرس هم نمیرسد؛ در نتیجه هم امنیت بالاتر میرود و هم مصرف منابع سرور کمتر میشود.
در این راهنمای جامع یاد میگیریم چطور با استفاده از htaccess:
- دسترسی به مدیریت وردپرس را محدود کنیم
- یک لایه رمز دوم روی wp-admin بگذاریم
- جلوی مشاهده ساختار پوشههای سایت را بگیریم
- از فایلهای حیاتی مثل wp-config محافظت کنیم
- مسیرهای رایج نفوذ هکرها را ببندیم
- حملات SQL Injection، XSS و Brute Force را کاهش دهیم
- از منابع سرور در برابر سوءاستفاده محافظت کنیم
این آموزش هم برای کاربران عادی قابل اجراست و هم از نظر فنی مطابق استانداردهای امنیت سرور است.
فایل htaccess چیست و دقیقاً چه کاری انجام میدهد؟
فایل .htaccess یک فایل پیکربندی برای وبسرورهای Apache و LiteSpeed است. این فایل داخل هاست و معمولاً در ریشه نصب وردپرس (public_html) قرار دارد. نکته مهم اینجاست که این فایل بدون نیاز به دسترسی روت سرور، اجازه میدهد قوانین سطح سرور تعریف کنید.
به زبان ساده، htaccess به سرور میگوید:
- چه درخواستهایی مجاز هستند
- چه درخواستهایی باید رد شوند
- چه فایلهایی قابل دسترسی باشند
- چه مسیرهایی محدود شوند
- چه قوانین امنیتی اجرا شود
تفاوت مهم اینجاست که این تصمیمها قبل از اجرای PHP و وردپرس گرفته میشود. بنابراین:
✔ حمله زودتر متوقف میشود
✔ منابع سرور کمتر مصرف میشود
✔ هکر حتی به لایه وردپرس نمیرسد
به همین دلیل، تنظیمات امنیتی در htaccess یکی از مؤثرترین روشهای افزایش امنیت وردپرس محسوب میشود.
قبل از ویرایش htaccess حتماً این نکات را بدانید ⚠
فایل htaccess بسیار قدرتمند است، اما کوچکترین اشتباه در آن میتواند کل سایت را از دسترس خارج کند. بنابراین قبل از هر تغییری:
- حتماً بکاپ بگیرید
یک نسخه از فایل فعلی دانلود کنید. - کدها را دقیق کپی کنید
حتی یک کاراکتر اشتباه ممکن است خطای 500 ایجاد کند. - اگر سایت بالا نیامد
فایل را به نسخه قبلی برگردانید. - این روش مخصوص Apache و LiteSpeed است
اگر سرور شما Nginx باشد، این کدها عمل نمیکنند.
محدود کردن دسترسی به مدیریت وردپرس فقط برای IPهای مشخص
یکی از اصلیترین اهداف حملات هکری در وردپرس، صفحه مدیریت است. تقریباً تمام حملات Brute Force (تلاش مکرر برای حدس رمز عبور) و بسیاری از اسکنهای امنیتی روی این مسیرها انجام میشود:
/wp-admin
/wp-login.php
حالا یک سؤال ساده:
اگر فقط خودتان یا اعضای تیم باید وارد مدیریت شوند، چرا کل اینترنت باید بتواند حتی به صفحه ورود دسترسی داشته باشد؟
اینجاست که محدودسازی بر اساس IP تبدیل به یک دیوار امنیتی بسیار قدرتمند میشود.
این روش دقیقاً چطور کار میکند؟
سرور قبل از اینکه حتی صفحه ورود وردپرس نمایش داده شود، IP کاربر را بررسی میکند:
❌ اگر IP در لیست مجاز نباشد → دسترسی کاملاً رد میشود
✅ اگر IP مجاز باشد → اجازه ورود میگیرد
یعنی رباتها، هکرها و اسکنرها اصلاً به صفحه لاگین نمیرسند.
کد محدودسازی IP برای مدیریت وردپرس
کد زیر را داخل فایل .htaccess اصلی سایت (در روت هاست) قرار دهید:
AuthUserFile /dev/null
AuthGroupFile /dev/null
AuthName "WordPress Admin Access Control"
AuthType Basic
<RequireAll>
Require all denied
Require ip xx.xx.xx.xxx
Require ip xx.xx.xx.xxx
</RequireAll>
توضیح خط به خط (به زبان ساده)
deny from all
یعنی همه کاربران اینترنت به صورت پیشفرض مسدود هستند.
allow from xx.xx.xx.xxx
یعنی فقط IPهایی که اینجا وارد میکنید مجازند.
شما میتوانید چند IP مختلف اضافه کنید؛ مثلاً:
- IP منزل
- IP محل کار
- IP همکار یا مدیر سایت
چطور IP خودمان را پیدا کنیم؟
در گوگل بنویسید:
What is my IP
عدد نمایش داده شده همان IP شماست.
نکته بسیار مهم ⚠
این روش برای سایتهایی که کاربران عمومی ثبتنام و ورود دارند مناسب نیست. چون کاربران دیگر نمیتوانند وارد حساب خود شوند.
این روش مخصوص سایتهایی است که:
- مدیریت فقط توسط یک یا چند نفر انجام میشود
- سایت شرکتی یا شخصی است
- دسترسی مدیریتی محدود است
مزیت امنیتی این روش
| بدون محدودیت IP | با محدودیت IP |
|---|---|
| هر رباتی میتواند حمله کند | فقط IPهای مجاز به لاگین میرسند |
| حملات Brute Force ادامه دارد | حمله قبل از شروع متوقف میشود |
| مصرف منابع سرور بالا | درخواستهای مخرب حذف میشوند |
این یکی از مؤثرترین روشهای امنیتی سطح سرور است که حتی بسیاری از سایتهای بزرگ هم از آن استفاده میکنند.
گذاشتن رمز دوم روی پوشه wp-admin (لایه امنیتی سطح سرور)
در حالت عادی وقتی کسی وارد /wp-admin میشود، مستقیماً صفحه ورود وردپرس را میبیند. یعنی تنها سد امنیتی، نام کاربری و رمز وردپرس است.
اما با این روش، قبل از اینکه اصلاً صفحه لاگین وردپرس نمایش داده شود، خود سرور از کاربر نام کاربری و رمز جداگانه میخواهد. این یعنی:
هکر باید دو مرحله امنیتی را رد کند
(رمز سرور + رمز وردپرس)
این روش یکی از استانداردهای امنیتی در سرورهای حرفهای است.
این روش چگونه کار میکند؟
وقتی کاربر به wp-admin مراجعه کند:
- سرور ابتدا یک پنجره ورود (Basic Auth) نشان میدهد
- اگر رمز صحیح وارد نشود → دسترسی کاملاً قطع میشود
- اگر صحیح باشد → تازه به صفحه ورود وردپرس میرسد
یعنی حتی اگر کسی رمز وردپرس را بداند، بدون عبور از مرحله اول نمیتواند وارد شود.
مرحله ۱: ساخت فایل رمز (.htpasswds)
در هاست باید یک فایل رمز بسازید. معمولاً از طریق:
cPanel → Directory Privacy / Password Protect Directories
یک نام کاربری و رمز تعریف میکنید و سیستم یک فایل رمزگذاریشده ایجاد میکند.
این فایل معمولاً در مسیری شبیه این ذخیره میشود:
/home/username/.htpasswds/public_html/wp-admin/passwd
مرحله ۲: ساخت فایل htaccess داخل پوشه wp-admin
حالا داخل پوشه wp-admin یک فایل .htaccess جدید بسازید (جدا از htaccess اصلی سایت) و کد زیر را قرار دهید:
AuthName "Admins Only"
AuthUserFile /home/USERNAME/.htpasswds/public_html/wp-admin/passwd
AuthGroupFile /dev/null
AuthType Basic
require user username
<Files admin-ajax.php>
Order allow,deny
Allow from all
Satisfy any
</Files>
توضیح بخشهای مهم کد
AuthUserFile
مسیر فایل رمز ساخته شده است. باید دقیقاً همان مسیر فایل تولید شده در هاست باشد.
USERNAME باید نام کاربری هاست شما باشد؛ مسیر در هر سرور ممکن است متفاوت باشد.
require user username
نام کاربری که در مرحله ساخت رمز تعریف کردید.
admin-ajax.php باز گذاشته شده
بسیاری از افزونهها و قالبها از این فایل استفاده میکنند. اگر بسته شود، بخشهایی از سایت از کار میافتد.
مزیت امنیتی این روش
| بدون رمز دوم | با رمز دوم |
|---|---|
| فقط رمز وردپرس محافظت میکند | دو لایه امنیتی فعال است |
| حملات Brute Force مستقیم انجام میشود | حمله قبل از رسیدن به وردپرس متوقف میشود |
| امکان حدس رمز بیشتر است | هکر باید دو رمز مستقل را بشکند |
چه زمانی این روش عالی است؟
✔ سایت شرکتی
✔ سایت شخصی
✔ مدیریت محدود
✔ پروژههای مهم
چه زمانی احتیاط کنیم؟
اگر از سرویسهایی مثل Jetpack یا برخی APIهای خارجی استفاده میکنید، ممکن است نیاز به تنظیمات اضافه باشد.
این روش، امنیت مدیریت وردپرس را چندین برابر میکند و جلوی اکثر تلاشهای نفوذ را در همان مرحله سرور متوقف میکند.
جلوگیری از نمایش لیست فایلها و پوشهها (Directory Listing)
یکی از اشتباهاتی که در بسیاری از سایتها دیده میشود این است که اگر کاربری وارد مسیری شود که فایل index ندارد، سرور لیست کامل فایلها و پوشههای داخل آن مسیر را نمایش میدهد.
مثلاً اگر این قابلیت فعال باشد، ممکن است کاربر بتواند چنین چیزی ببیند:
/wp-content/uploads/
/wp-content/plugins/
/backup/
و داخل آنها فایلها را مشاهده کند. این یعنی لو رفتن ساختار داخلی سایت؛ چیزی که هکرها عاشق آن هستند.
چرا این موضوع خطرناک است؟
وقتی ساختار پوشهها مشخص شود، مهاجم میتواند:
- مسیر فایلهای مهم را شناسایی کند
- نسخههای بکاپ فراموششده را پیدا کند
- افزونههای نصبشده را تشخیص دهد
- فایلهای قدیمی یا آسیبپذیر را کشف کند
در واقع ساختار داخلی سایت را در اختیار مهاجم قرار میدهید.
راهحل: غیرفعال کردن Directory Listing (نمایش لیست فایلهای داخل پوشه)
کافی است این کد را در فایل .htaccess اصلی سایت قرار دهید:
Options -Indexes
این کد چه کاری انجام میدهد؟
وقتی کاربری وارد مسیری بدون فایل index شود:
❌ به جای دیدن لیست فایلها
✅ خطای دسترسی (Forbidden) دریافت میکند
یعنی سرور میگوید:
«محتوای این پوشه قابل نمایش نیست.»
مزیت امنیتی این تنظیم
| بدون این کد | با این کد |
|---|---|
| ساختار سایت قابل مشاهده است | ساختار پوشهها مخفی میماند |
| هکر مسیرها را شناسایی میکند | اطلاعات داخلی لو نمیرود |
| ریسک نفوذ بالا میرود | یکی از مسیرهای شناسایی بسته میشود |
این تنظیم بسیار ساده است، اما جلوی یکی از مراحل اصلی شناسایی سایت توسط مهاجم را میگیرد.
محافظت از فایل حیاتی wp-config.php
فایل wp-config.php قلب وردپرس است. داخل این فایل اطلاعات بسیار حساس ذخیره میشود:
- نام و آدرس دیتابیس
- نام کاربری دیتابیس
- رمز دیتابیس
- کلیدهای امنیتی وردپرس
- پیشوند جداول و برخی تنظیمات حیاتی
اگر این فایل لو برود، هکر میتواند تقریباً کنترل کامل سایت شما را به دست بیاورد.
چرا این فایل هدف اصلی هکرهاست؟
- شامل اطلاعات اتصال به دیتابیس است
- به کمک آن میتوانند به راحتی وارد سایت شوند
- از این فایل میتوانند برای تزریق کد مخرب استفاده کنند
به همین دلیل محافظت از wp-config.php یکی از اولین و مهمترین اقدامات امنیتی است.
راهحل: مسدود کردن دسترسی مستقیم به wp-config.php
کافی است این کد را در فایل .htaccess اصلی سایت قرار دهید:
<Files wp-config.php>
Require all denied
</Files>
توضیح ساده:
order allow,deny→ ابتدا اجازهها بررسی شود سپس رد شودdeny from all→ همه کاربران اینترنت دسترسی ندارند
نتیجه: هیچ کاربری نمیتواند مستقیم از مرورگر به این فایل دسترسی پیدا کند.
نکات حرفهای
- این کد باید در ریشه وردپرس قرار گیرد
- هیچ افزونه یا تنظیمی نباید این دسترسی را باز کند
- حتی هکرهایی که مسیر فایل را بدانند، بدون دسترسی سرور، نمیتوانند محتویات را مشاهده کنند
مزیت امنیتی این کار
| بدون محافظت | با محافظت htaccess |
|---|---|
| هر کسی میتواند فایل را مشاهده کند | فایل کاملاً مخفی میشود |
| امکان هک دیتابیس بالا است | دسترسی مستقیم غیرممکن میشود |
| سایت آسیبپذیر | یکی از حیاتیترین مسیرهای نفوذ بسته میشود |
این مرحله، پایهایترین و حیاتیترین اقدام امنیتی است که هر سایت وردپرسی باید انجام دهد.
مسدود کردن XML-RPC و جلوگیری از حملات Brute Force
فایل xmlrpc.php در وردپرس برای ارتباطات خاص مثل اپلیکیشن موبایل وردپرس، Jetpack و برخی APIها استفاده میشود. اما متأسفانه، یکی از بزرگترین منابع حملات Brute Force و DDoS است.
اگر از اپ موبایل وردپرس یا اتصال خارجی استفاده نمیکنید، بهترین روش این است که دسترسی به این فایل را ببندید.
چرا XML-RPC خطرناک است؟
- امکان ارسال درخواستهای متعدد برای حدس رمز عبور وجود دارد
- میتوان با آن سایت را در معرض حملات DDoS قرار داد
- بسیاری از هکرها از این مسیر برای نفوذ استفاده میکنند
یعنی حتی اگر مدیریت وردپرس کاملاً ایمن باشد، این مسیر بدون محافظت میتواند سایت را تهدید کند.
راهحل: مسدود کردن xmlrpc.php با htaccess
کافی است این کد را در فایل .htaccess اصلی سایت قرار دهید:
<Files xmlrpc.php>
Require all denied
</Files>
توضیح ساده:
- همه درخواستها به این فایل رد میشوند
- هیچ کاربری نمیتواند از مرورگر یا رباتها به آن دسترسی پیدا کند
- اگر بعداً نیاز به اتصال API داشتید، میتوان دسترسی را به IP مشخص محدود کرد
مزیت امنیتی
| بدون محدودیت | با محدودیت XML-RPC |
|---|---|
| هکرها به راحتی Brute Force میکنند | حملات Brute Force قبل از رسیدن به وردپرس متوقف میشود |
| سایت در معرض DDoS است | سایت امنتر میشود |
| امکان نفوذ بالا است | مسیر اصلی نفوذ بسته میشود |
با این مرحله، یکی از محبوبترین درگاههای هک وردپرس بسته شد و سایت شما امنیت بسیار بالاتری پیدا میکند.
جلوگیری از اجرای فایلهای PHP در پوشههای غیرضروری (Uploads و wp-includes)
پوشههای /wp-content/uploads/ و /wp-includes/ برای ذخیره فایلهای رسانهای و فایلهای سیستمی وردپرس استفاده میشوند. اما مشکل اینجاست که اگر هکر بتواند یک فایل PHP مخرب در این مسیرها آپلود کند، میتواند بدون محدودیت آن را اجرا کند و کنترل سایت را به دست بگیرد.
راهحل: جلوگیری از اجرای PHP
۱. پوشه uploads
در مسیر /wp-content/uploads/ یک فایل .htaccess جدید بسازید و این کد را داخل آن قرار دهید:
<FilesMatch "\.php$">
Require all denied
</FilesMatch>
نتیجه:
- هیچ فایل PHP نمیتواند اجرا شود
- فقط فایلهای تصویری و رسانهای مجاز هستند
- هکر حتی اگر شل آپلود کند، قادر به اجرای آن نیست
۲. پوشه wp-includes
برای جلوگیری از اجرای فایلهای PHP سیستم، در فایل .htaccess اصلی سایت (روت وردپرس) این کد را اضافه کنید:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^wp-includes/.*\.php$ - [F,L]
</IfModule>
نتیجه:
- تمام فایلهای PHP در wp-includes که نباید مستقیم اجرا شوند، مسدود میشوند
- جلوی سوءاستفاده از اسکریپتهای هسته وردپرس گرفته میشود
مزیت امنیتی این مرحله
| بدون این کد | با این کد |
|---|---|
| هکر میتواند فایل PHP مخرب آپلود و اجرا کند | هیچ فایل PHP غیرمجاز اجرا نمیشود |
| امکان دسترسی به هسته سایت بالا است | دسترسی غیرمجاز به هسته محدود میشود |
| سایت آسیبپذیر میماند | یکی از مسیرهای نفوذ مهم بسته میشود |
با انجام این مرحله، سایت شما در برابر آپلود شلها و اسکریپتهای مخرب بسیار مقاوم خواهد بود.
جلوگیری از Hotlinking تصاویر و محافظت از پهنای باند سرور
Hotlinking (استفاده مستقیم سایتهای دیگر از تصاویر سرور شما) زمانی اتفاق میافتد که سایتهای دیگر، تصاویر یا فایلهای شما را مستقیماً از سرور شما نمایش دهند. یعنی تصویر شما روی سایت آنها نشان داده میشود، ولی پهنای باند و منابع سرور شما مصرف میشود.
این نه تنها پهنای باند شما را هدر میدهد، بلکه در برخی موارد میتواند سایت شما را کند کند و حتی باعث شود سرور شما از دسترس خارج شود.
راهحل: مسدود کردن Hotlinking با htaccess
کد زیر را در فایل .htaccess اصلی سایت قرار دهید:
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^https?://(www\.)?yoursite\.com [NC]
RewriteRule \.(jpg|jpeg|png|gif|webp)$ - [F]
توضیح ساده:
RewriteCond %{HTTP_REFERER} !^$→ درخواستهایی که بدون منبع (Referrer) هستند، بررسی میشوندRewriteCond %{HTTP_REFERER} !^https?://(www.)?yoursite.com [NC]→ فقط سایت خود شما مجاز استRewriteRule \.(jpg|jpeg|png|gif|webp)$ - [F]→ اگر سایت دیگر بخواهد تصویر را نمایش دهد، دسترسی رد میشود (Forbidden)
مزیت امنیتی و عملیاتی
| بدون Hotlink Protection | با Hotlink Protection |
|---|---|
| سایتهای دیگر پهنای باند شما را مصرف میکنند | پهنای باند شما محفوظ میماند |
| تصاویر شما روی سایتهای دیگر نمایش داده میشود | فقط سایت خودتان میتواند تصاویر را نمایش دهد |
| سرور کند میشود و منابع هدر میرود | سرور امن و سریع باقی میماند |
این مرحله باعث میشود نه تنها امنیت، بلکه هزینه و منابع سرور نیز بهینه شود.
محدود کردن متدهای HTTP و جلوگیری از حملات غیرعادی
هر بار که مرورگر یا ربات به سایت شما درخواست میدهد، یک متد HTTP استفاده میشود. رایجترینها:
- GET → برای دریافت صفحات
- POST → برای ارسال اطلاعات
- HEAD → درخواست هدر صفحات
اما متدهایی مثل TRACE، DELETE، TRACK معمولاً مورد سوءاستفاده قرار میگیرند و سایت را در معرض حملات قرار میدهند.
راهحل: محدود کردن متدهای HTTP
کد زیر را در فایل .htaccess اصلی سایت اضافه کنید:
<LimitExcept GET POST HEAD>
Require all denied
</LimitExcept>
توضیح ساده:
RewriteCond %{REQUEST_METHOD}→ بررسی متد درخواست^(TRACE|DELETE|TRACK)→ اگر متد یکی از اینها باشدRewriteRule .* - [F,L]→ دسترسی رد میشود (Forbidden)
یعنی هکرهایی که میخواهند با متدهای غیرمعمول نفوذ کنند، قبل از رسیدن به وردپرس مسدود میشوند.
مزیت امنیتی
| بدون محدودیت متدها | با محدودیت متدها |
|---|---|
| سایت در معرض حملات غیرمعمول است | حملات با متدهای غیرمجاز مسدود میشوند |
| هکرها میتوانند نقاط ضعف سرور را بررسی کنند | مسیرهای نفوذ محدود میشوند |
| آسیبپذیری بالا است | امنیت کلی سرور افزایش مییابد |
این یکی از تنظیمات پایهای امنیت سرور است که اغلب نادیده گرفته میشود.
جلوگیری از SQL Injection و XSS با htaccess
هکرها از SQL Injection (تزریق کد مخرب به کوئری پایگاه داده) برای دسترسی به پایگاه داده و از XSS (Cross-Site Scripting) برای اجرای اسکریپتهای مخرب در مرورگر کاربران استفاده میکنند. این دو روش از رایجترین حملات وب هستند و میتوانند سایت شما را به شدت آسیبپذیر کنند.
جلوگیری از SQL Injection
برای مسدود کردن درخواستهایی که شامل الگوهای رایج تزریق SQL هستند، این کد را در فایل .htaccess اصلی اضافه کنید:
RewriteCond %{QUERY_STRING} (\%27)|(\')|(\-\-)|(\%23)|(#) [NC]
RewriteRule .* - [F,L]
توضیح ساده:
%27یا'→ آپوستروف یا نقل قول--→ کامنت SQL#→ کامنت SQL[F,L]→ مسدود کردن درخواست
این کد جلوی اکثر تلاشهای تزریق SQL ساده را میگیرد.
جلوگیری از XSS
برای جلوگیری از ارسال کد مخرب (اسکریپت) از طریق URL:
RewriteCond %{QUERY_STRING} (<|%3C).*script.*(>|%3E) [NC]
RewriteRule .* - [F,L]
توضیح ساده:
- بررسی درخواستها برای تگ
<script> - اگر پیدا شد، درخواست رد میشود
- جلوی اجرای اسکریپتهای مخرب گرفته میشود
مزیت امنیتی
| بدون محافظت | با محافظت htaccess |
|---|---|
| مهاجم میتواند دادهها را دستکاری کند | تزریق SQL و XSS قبل از رسیدن به وردپرس متوقف میشود |
| سایت و کاربران آسیبپذیرند | سایت و کاربران امن میمانند |
| احتمال هک پایگاه داده بالا است | امنیت دادهها تضمین میشود |
این مرحله یکی از کلیدیترین اقدامات امنیتی برای جلوگیری از نفوذ و سرقت اطلاعات است.
مسدود کردن رباتها و اسکنرهای مخرب با htaccess
هکرها و سرویسهای خزنده مخرب (رباتها) میتوانند سایت شما را اسکن کنند، نسخه افزونهها و قالبها را شناسایی کنند، و مسیرهای آسیبپذیر را پیدا کنند.
برای مثال رباتهایی مثل AhrefsBot، SemrushBot، MJ12bot گاهی باعث مصرف بیجهت منابع سرور میشوند و حتی ممکن است اطلاعات سایت شما را جمعآوری کنند.
راهحل: مسدود کردن رباتها با htaccess
کد زیر را در فایل .htaccess اصلی اضافه کنید:
SetEnvIfNoCase User-Agent "AhrefsBot" bad_bot
SetEnvIfNoCase User-Agent "SemrushBot" bad_bot
SetEnvIfNoCase User-Agent "MJ12bot" bad_bot
Require all granted
Require not env bad_bot
توضیح ساده:
SetEnvIfNoCase User-Agent→ بررسی نام ربات در هدر درخواستbad_bot→ علامتگذاری این ربات به عنوان مخربDeny from env=bad_bot→ مسدود کردن تمام درخواستهای این ربات
💡 نکته: میتوانید لیست رباتها را بر اساس نیاز سایت خود به روز کنید.
مزیت امنیتی و عملیاتی
| بدون این کد | با این کد |
|---|---|
| رباتها پهنای باند و منابع سایت را مصرف میکنند | مصرف منابع کاهش مییابد |
| امکان شناسایی نقاط ضعف سایت توسط هکرها وجود دارد | رباتهای مخرب مسدود میشوند |
| سرعت سایت کاهش مییابد | سایت سریعتر و امنتر میشود |
با این مرحله، شما کنترل کامل روی دسترسی رباتها و خزندهها دارید و جلوی یکی از منابع رایج سوءاستفاده گرفته میشود.
محافظت نهایی با هدرهای امنیتی و HTTPS
علاوه بر محدودسازی دسترسیها و جلوگیری از نفوذ، یک لایه مهم دیگر امنیت، هدرهای HTTP و استفاده کامل از HTTPS است. این کار جلوی بسیاری از حملات سطح مرورگر و جاسوسی اطلاعات میشود.
۱. فعال کردن HTTPS
اگر هنوز سایت شما از HTTPS استفاده نمیکند، حتماً آن را فعال کنید.
مزایای HTTPS:
- تمامی دادههای بین مرورگر کاربر و سرور رمزگذاری میشود
- جلوی حملات Man-in-the-Middle گرفته میشود
- اعتماد کاربران و رتبه سایت در گوگل افزایش مییابد
اجباری کردن HTTPS در وردپرس با htaccess
این کد را در فایل .htaccess روت اضافه کنید:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
✅ توضیح ساده: اگر کاربر با HTTP وارد شود، به HTTPS هدایت میشود و همیشه ارتباط امن خواهد بود.
۲. اضافه کردن هدرهای امنیتی
هدرهای امنیتی مرورگر میگویند چه محتوایی میتواند اجرا شود و چه چیزی مسدود شود. نمونههای مهم:
# جلوگیری از clickjacking
Header always append X-Frame-Options SAMEORIGIN
# جلوگیری از XSS
Header set X-XSS-Protection "1; mode=block"
# جلوگیری از MIME type sniffing
Header set X-Content-Type-Options "nosniff"
# محدود کردن دسترسی به مرورگر
Header set Referrer-Policy "no-referrer-when-downgrade"
# سیاست Content Security Policy پایهای
Header set Content-Security-Policy "default-src 'self';"
توضیح ساده:
X-Frame-Options→ جلوی باز شدن سایت داخل iframe سایتهای دیگرX-XSS-Protection→ مرورگر تلاش میکند XSS را مسدود کندX-Content-Type-Options→ مرورگر فایلها را با نوع صحیح اجرا میکندReferrer-Policy→ اطلاعات منبع (referrer) مرورگر محدود میشودContent-Security-Policy→ مشخص میکند چه منابعی مجاز به اجرا هستند
مزیت امنیتی این مرحله
| بدون هدرهای امنیتی | با هدرهای امنیتی و HTTPS |
|---|---|
| سایت در معرض حملات XSS و clickjacking است | مرورگر جلوی حملات را میگیرد |
| دادهها بدون رمزگذاری منتقل میشوند | اطلاعات بین کاربر و سرور امن است |
| اعتماد کاربران و سئو کم میشود | امنیت، اعتماد و سئو سایت افزایش مییابد |
این بخش، لایه تکمیلی امنیت سایت است و سایت شما را در برابر اکثر حملات شناختهشده وب مقاوم میکند.
جمعبندی نهایی: ارتقای امنیت وردپرس با htaccess
همانطور که در طول این راهنمای جامع دیدیم، فایل .htaccess ابزار بسیار قدرتمندی است که میتواند سطح امنیت سایت وردپرسی شما را چندین برابر افزایش دهد. با استفاده از htaccess، بسیاری از تهدیدها قبل از رسیدن به وردپرس متوقف میشوند و این یعنی:
- مصرف منابع سرور بهینه میشود
- سایت شما در برابر حملات رایج هکرها مقاوم میشود
- کاربران و اطلاعات حساس سایت در امنیت کامل قرار میگیرند
مراحل کلیدی که پوشش دادیم:
- محدود کردن دسترسی به مدیریت وردپرس → فقط IPهای مجاز اجازه ورود دارند.
- گذاشتن رمز دوم روی پوشه wp-admin → دو لایه امنیتی قبل از ورود به وردپرس.
- جلوگیری از نمایش لیست فایلها و پوشهها → هکرها نمیتوانند ساختار سایت را شناسایی کنند.
- محافظت از wp-config.php → مهمترین فایل وردپرس کاملاً ایمن میشود.
- مسدود کردن XML-RPC → جلوی حملات Brute Force و DDoS گرفته میشود.
- جلوگیری از اجرای فایلهای PHP در پوشههای غیرضروری → آپلود شلها و کدهای مخرب بلاک میشوند.
- جلوگیری از Hotlinking تصاویر → پهنای باند سایت محفوظ میماند و منابع هدر نمیرود.
- محدود کردن متدهای HTTP → متدهای غیرمعمول و خطرناک مسدود میشوند.
- جلوگیری از SQL Injection و XSS → تزریق کد و حملات پایگاه داده قبل از رسیدن به وردپرس متوقف میشوند.
- مسدود کردن رباتها و اسکنرهای مخرب → مصرف منابع سرور کاهش مییابد و نقشه سایت در اختیار هکرها قرار نمیگیرد.
- هدرهای امنیتی و HTTPS → ارتباط کاربر و سرور رمزگذاری میشود و مرورگر از حملات XSS و clickjacking محافظت میکند.
نکات پایانی برای اجرای موفق
- همیشه قبل از ویرایش htaccess بکاپ بگیرید.
- تغییرات را مرحله به مرحله انجام دهید و بعد از هر مرحله سایت را بررسی کنید.
- اگر سایت شما دارای کاربران عمومی است، محدودسازی IP و رمز دوم را با دقت انتخاب کنید.
- این آموزش پایهایترین و پیشرفتهترین نکات امنیتی htaccess را پوشش میدهد، اما برای امنیت کامل، ترکیب آن با افزونههای امنیتی و مانیتورینگ سرور توصیه میشود.
با اجرای همه این مراحل، سایت وردپرسی شما به یک سدی محکم در برابر حملات و نفوذهای رایج تبدیل خواهد شد و میتوانید با خیال راحت روی توسعه، تولید محتوا و خدمات سایت تمرکز کنید، بدون نگرانی از تهدیدهای امنیتی.