فایل htaccess یکی از کلیدی ترین فایل های سیستم مدیریت محتوای وردپرس محسوب می شود. در این آموزش می خواهیم با کمک نکات عملی و نمونه کدهای مخصوص فایل .htaccess سایت های وردپرسی را در مقابل هکرهای و حملات امنیتی محافظت کنیم. به دلیل محبوبیت بالای وردپرس درصد بالایی از وبسایت ها در سطح وب از این CMS استفاده میکنند بنابراین هکرها به خوبی به نقاط ضعف امنیتی وردپرس آشنایی دارند؛ برای افزایش امنیت وبسایت خود به کمک فایل کوچک اما تاثیرگذار .htaccess تا انتهای آموزش همراه ما باشید.

فایل htaccess. چیست و چگونه می توان با کمک این فایل امنیت سایت را افزایش داد؟
فایل .htaccess فایلی در سایت های وردپرسی است که برای پیکربندی تنظیمات و تعیین سطوح دسترسی از آن استفاده می شود. معمولا مواردی مثل ساختار لینک های سایت، قوانین ریدایرکت ، کنترل دسترسی و تنظیمات کش در آن وجود دارد. اگر روی هاست خود وارد root سایت یعنی پوشه public_html شوید این فایل را می بینید.
.htaccess در وب سرورهای Apache نقش مهمی دارد. (البته در وب سرورهای LiteSpeed Enterprise نیز پشتیبانی کامل از.htaccess انجام می شود. ) پیش از اجرای وردپرس توسط سرور ابتدا این فایل اجرا می شود؛ بنابراین در صورت وجود تنظیمات درست در این فایل، می تواند مثل یک فایروال برای سایت عمل کند.
نکته: قبل از انجام هر تغییری در فایل .htaccess یا هر یک از فایل های اصلی وردپرس حتما از سایت بکاپ بگیرید. بروز اشتباه در کدهای این فایل باعث بروز خطا و اختلال در کل وبسایت می شود.
گام اول : افزایش امنیت خود فایل .htaccess
باتوجه به نقش کلیدی این فایل، هکرها ممکن است تلاش کنند محتویات این فایل را مشاهده یا تغییر دهند. کد زیر مانع از انجام این کار می شود:
<Files ".htaccess">
Order allow,deny
Deny from all
این فایل را همانند یک فایل متنی ویرایش کرده و این کد را به انتهای فایل اضافه کنید.
گام دوم: حفاظت از فایل های مهم وردپرس بوسیله .htaccess
محافظت از فایل wp-config.php
یکی از فایل های مهم دیگری که مثل شناسنامه وردپرس اطلاعات پایگاه داده و کاربر ادمین را در خود نگهداری می کند؛ فایل wp-config.php است. در صورت دستکاری این فایل توسط هکرها سایت از دسترس خارج می شود. اضافه کردن کد زیر از دسترسی هکرهای از طریق مرورگر به این فایل جلوگیری می کند:
<Files "wp-config.php">
Order allow,deny
Deny from all
محافظت از پوشه wp-admin
پوشه wp-admin پیشخوان مدیریتی وردپرس است. باتوجه به اینکه در اکثر وبسایت ها تعداد مدیران محدود و مشخص است. می توانید با کمک کد زیر دسترسی به پوشه مدیریت را به آدرس های IP مشخصی محدود کنید (البته اگر سایت شما IP ثابت دارد این کد کاربرد دارد) مقابل allow from باید آدرس های IP مجاز را وارد کنید.
order deny,allow
deny from all
allow from 192.168.123.123
مسدودسازی فایل xmlrpc.php
جلوگیری از دسترسی به فایل xmlrpc.php نیز از حملات Brute Force و DDoSسایت شما را محفوظ می کند. در صورت عدم نیاز به این فایل (برای اتصال اپلیکیشن موبایل وردپرس و سرویس های اتوماسیون از این فایل استفاده می کنند) بهتر است توسط کد زیر مسدود شود.
<Files "xmlrpc.php">
Order allow,deny
Deny from all
محافظت از پوشه wp-includes
هسته اصلی وردپرس داخل پوشه Wp-includes قرار دارد. باتوجه به قرارگیری فایل های PHP مهم در این پوشه، بسیار اهمیت دارد که تنها وردپرس از طریق هسته خودش به این فایل های دسترسی داشته باشد. و سایر کاربران از طریق URL قادر به اجرای این فایل های مهم نباشند. علاوه بر فایل های PHP، فایل های استایل، js و فونت مورد نیاز قالب و افزونه ها نیز در این پوشه وجود دارند که نباید دسترسی به آنها مسدود شود. قرارگیری کد زیر قبل از # BEGIN WordPress در فایل .htaccess همین کار را برای ما انجام می دهد.
# Protect wp-includes folder
RewriteEngine On
RewriteBase /
# Block direct access to PHP files in wp-includes
RewriteRule ^wp-includes/.*\.php$ - [F,L]
# Allow specific WordPress exceptions
RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [L]
RewriteRule ^wp-includes/theme-compat/ - [L]
جلوگیری از Hotlink تصاویر
منظور از Hotlink تصاویر این هست که وبسایت ها به جای اینکه تصاویر شما را دانلود و در سایت خود بارگذاری و استفاده کنند؛ آدرس تصویر رو از هاست شما در سایت خود قرار بدهند. این کار مخصوصا اگر حجم فایل تصویری زیاد باشد پهنای باند سرور شما را مصرف کرده و فشار روی سرور ایجاد می کند. برای جلوگیری از این سو استفاده محتوایی کد زیر را در فایل .htaccess قرار دهید: ( به جای yourdomain.com آدرس سایت خود را قرار دهید )
# Protect wp-includes folder
RewriteEngine On
RewriteBase /
# Block direct access to PHP files in wp-includes
RewriteRule ^wp-includes/.*\.php$ - [F,L]
# Allow specific WordPress exceptions
RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [L]
RewriteRule ^wp-includes/theme-compat/ - [L]
جلوگیری از مشاهده لیست فایلها (Directory Browsing)
در حالت عادی در صورت نبود فایل Index.html در داخل یک پوشه، لیست فایل های پوشه نمایش داده می شود. با کد زیر می توانید از این حالت جلوگیری کنید:
Options -Indexes
نکته: در وب سرورهای لایت اسپید تمام قوانین امنیتی باید قبل از # BEGIN LSCACHE قرار گیر
# BEGIN LSCACHE
...
# END LSCACHE
جمع بندی
در این آموزش کدهایی مخصوص فایل .htaccess معرفی شد که بدون نیاز به افزونه جانبی یک لایه دفاعی برای سایت های وردپرسی در برابر حملات مختلف هکرها و سو استفاده های محتوایی ایجاد می کند. در صورتی که از وب سرور Nginx استفاده می کنید باید بدانید که این وب سرور از فایل .htaccess پشتیبانی نمی کند و این وب سرور قوانین را در فایل کانفیگ خود یعنی nginx.conf ذخیره می کند. درنتیجه قوانین موجود در فایل .htaccess در این وب سرور بی اثر خواهند بود. لازم به ذکر است که در هاست های اشتراکی شما به nginx.conf دسترسی ندارید و باید از پشتیبانی هاست درخواست کنید که تنظیمات مورد نیاز را برایتان اعمال کند.



