داشتن یک فایل .htaccess
که به صورت درست و کامل پیکربندی شده باشد برای افزایش امنیت و کاهش آسیب پذیری های سایت ضروری است.
.htaccess
یک فایل تنظیمات است که توسط وب سرور Apache مورد استفاده قرار می گیرد. اکثر سایت های وردپرسی روی وب سرور آپاچی اجرا می شوند ولی بخشی هم روی وب سرور های دیگر مثل nginx یا litespeed کار می کنند. در این مقاله مجموعه ای از تکه های مربوط به تنظیمات htaccess را خواهید یافت که می توانید با استفاده از آنها امنیت سایت خود را بالاتر ببرید و امکانات جالبی را هم اضافه کنید.
فراموش نکنید قبل از هر کاری از فایل .htaccess
نسخه پشتیبان تهیه کنید تا اگر همه چیز خوب پیش نرفت بتوانید سریعا به حالت قبل برگردید.
اگر از کسانی هستید که معمولا به تنظیمات پیچیده تر کاری ندارند می توانید پلاگین BulletProof Security را به عنوان یک پلاگین امنیتی قابل اعتماد روی وردپرس تان نصب کنید تا این پلاگین خودش امنیت htaccess را نیز بالا ببرد.
ایجاد .htaccess
پیش فرض وردپرس
فایل htaccess برای هر دایرکتوری می توانید به صورت جداگانه وجود داشته باشد . اگر شما در پوشه اصلی وردپرس این فایل را پیدا نمی کنید می توانید در این پوشه یک فایل خالی با نام .htaccess
ایجاد کنید.دقت کنید که اول فایل علامت . وجود داشته باشد.
کد های پیشفرض فایل htaccess وردپرس را در زیر مشاهده می کنید.
# BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress
در این بخش از کد نباید تغییری بدید و کدهای جدیدی که می خواهید اضافه کنید باید در زیر این بخش اضافه کنید.
۱.مسدود کردن دسترسی به همه فایل های htaccess
# Denies access to all .htaccess files <Files ~ "^.*\.([Hh][Tt][Aa])"> Order Allow,Deny Deny from all Satisfy all </Files>
۲.محافظت از فایل تنظیمات wp-config
اگر بخواهید بر اساس IP ثابت مدیران سایت اجازه دسترسی بدهید کافیست علامت # را از اول خط # Allow from xx.xx.xx.xxx
بردارید و به جای x هم IP را جایگزین کنید.
# Protects wp-config <Files wp-config.php> Order Allow,Deny # Allow from xx.xx.xx.xxx # Allow from yy.yy.yy.yyy Deny from all </Files>
۳.جلوگیری از حمله DDOS از طریق قابلیت XML-RPC
# Protects XML-RPC, prevents DDoS attack <FilesMatch "^(xmlrpc\.php)"> Order Deny,Allow # Allow from xx.xx.xx.xxx # Allow from yy.yy.yy.yyy Deny from all </FilesMatch>
۴.محافظت از بخش مدیریت وردپرس
محافظت از مدیریت ایده خوبی برای افزایش امنیت سایت است ولی فراموش نکنید در بخش پایین کد زیر حداقل به یک IP اجازه دسترسی Allow بدهید والا به مدیریت دسترسی نخواهید داشت.برای محافظت از پوشه wp-admin می توانید از طریق cPanel و Protect Directory هم همین کار را راحت تر انجام دهید.
# Protects admin area by IP AuthUserFile /dev/null AuthGroupFile /dev/null AuthName "WordPress Admin Access Control" AuthType Basic <LIMIT GET> Order Deny,Allow Deny from all Allow from xx.xx.xx.xxx Allow from yy.yy.yy.yyy </LIMIT>
۵.غیرفعال کردن امکان مشاهده محتویات پوشه ها (Directory Listing)
این مورد یکی از معمول ترین مشکلات امنیتی سایت هاست که هکر می تواند پوشه ها و فایل های داخل آنها را ببیند و راه نفوذ پیدا کند.خوشبختانه حل این مشکل با یک خط زیر امکان پذیر است
# Prevents directory listing Options -Indexes
۶.مسدود کردن اسپمرها و ربات ها
# Blocks spammers and bots <Limit GET POST> Order Allow,Deny Deny from xx.xx.xx.xxx Deny from yy.yy.yy.yyy </Limit> Allow from all
۷.جلوگیری از استفاده تصاویر سایت در سایت های دیگر
# Prevents image hotlinking RewriteEngine on RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourwebsite.com [NC] RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourwebsite2.com [NC] RewriteRule \.(jpe?g?|png|gif|ico|pdf|flv|swf|gz)$ - [NC,F,L]
۸.جلوگیری از دسترسی مستقیم به فایل های PHP قالب یا افزونه
این راه توسط شرکت امنیتی Acunetix پیشنهاد شده است .اطلاعات بیشتر
# Restricts access to PHP files from plugin and theme directories RewriteCond %{REQUEST_URI} !^/wp-content/plugins/file/to/exclude\.php RewriteCond %{REQUEST_URI} !^/wp-content/plugins/directory/to/exclude/ RewriteRule wp-content/plugins/(.*\.php)$ - [R=404,L] RewriteCond %{REQUEST_URI} !^/wp-content/themes/file/to/exclude\.php RewriteCond %{REQUEST_URI} !^/wp-content/themes/directory/to/exclude/ RewriteRule wp-content/themes/(.*\.php)$ - [R=404,L]
۹.مسدود کردن همه دسترسی ها به پوشه wp-includes
داخل این پوشه فقط فایل های هسته وردپرس هستند و هیچ پلاگین ،عکس یا صفحه ای که مورد نیاز کاربران باشد داخل آن نیست پس کلا دسترسی عمومی به آن را مسدود می کنیم
# Blocks all wp-includes folders 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>
۱۰.مسدود کردن حملات XSS
# Blocks some XSS attacks <IfModule mod_rewrite.c> RewriteCond %{QUERY_STRING} (\|%3E) [NC,OR] RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR] RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2}) RewriteRule .* index.php [F,L] </IfModule>
با سلام خیلی عالی بود من اشتباهی فایل htaccessسایتم رو پاک کردم و فقط با آموزش شما تونستم اون رو دوباره راه بندازم واقعا عالی بود ممنون
کاظمی راد
سلام . خیلی خوشحالم که مفید بوده دوست من