htaccess و امنیت وب ، ارتباط نزدیکی با هم دارند. امنیت در دنیای مجازی ، دغده بسیاری از کاربران امروزی است.

کمی محدودتر ، امنیت وبسایت ها ، موضوع مورد بحث میان وبمستران است.

و بطور تخصصی تر ، امنیت سیستم مدیریت محتوای وردپرس ، به عنوان پرکاربردترین و پراستفاده ترین سیستم حال حاظر دنیای وبسایت ها ، همیشه مورد توجه وبمستران بوده است.

امروز همراه شما هستیم ، تا با آموزش htaccess و کار با فایل htaccess ، هم به توانایی شما در افزایش امنیت وبسایت بیافزایم ، هم با صفر تا صد این فایل آشنا شوید.

همراه لدامین باشید.

 

htaccess چیست؟

فایل htaccess ، در اکثر سیستم های مدیریت محتوا ، در شاخه اصلی هاست ، وجود دارد. نام دیگر این فایل ، distributed configuration files می باشد که کاربرد کمی دارد.

از این فایل برای کنترل سرور آپاچی با ایجاد پیکربندی در دایرکتوری ها یا پوشه های مختلف، بر روی یک شاخه یا تمامی زیر شاخه ها در پیکربندی خاص و بدون دسترسی به root استفاده می شود. این فایل با پسوند .htaccess در کنار HTML یا PHP فعالیت می کند.

 

کاربرد های htaccess :

  • کنترل ریدایرکت
  • کنترل دسترسی فیزیکی به فایلها و پوشه ها
  • کنترل نمایش خطاهای Apache
  • تنظیمات URL Rewrite
  • مسدود کردن یک یا چند IP خاص یا یک رنج IP
  • گذاشت پسورد بر روی پوشه ای خاص
  • تنظیمات کش و Expire Date آن
  • اعمال برخی تغییرات در تنظیمات پیش فرض PHP، MySQL و Apache
  • جلوگیری از نمایش تمامی فایلها یا یک یا چند فایل با پسوندی خاص
  • اضافه نمودن یک MIME
  • معرفی یک Default Document در پوشه ای خاص
  • تنظیم Default Charset

 

کاربرد های htaccess

 

نکات مهم قبل از استفاده :

بعضی از دستورات این فایل منجر به غیرفعال شدن کل سایت شما می شود، که با تاثیر بر روی httpd.conf سرور این اتفاق می افتد.

استفاده از این فایل الزامی نیست و در همه مواقع پیشنهاد نمی شود. زیرا ممکن است با یک دستور و تابع اشتباه باعث واردن شدن آسیب یا هک شدن سایت خود شوید !

قبل از هرگونه اعمال تغییرات ، ایجاد دستور جدید یا استفاده و جابجایی این فایل ، از سایت خود بک آپ تهیه کنید !

 

اعمال تغییرات روی فایل htaccess :

فایل htaccess ، در بخش public_html ، در سی پنل موجود است . در تصویر زیر مشاهده کنید.

فایل htaccess در بخش public_html

 

اگر این فایل را مشاهده نکردید و قصد ایجاد این فایل را دارید، بر روی new file کلیک کرده،سپس عبارت .htaccess وارد کنید.

برای اعمال تغییرات مورد نظر در فایل htaccess کافی ایست فایل را در پوشه هاست خود قرار داده تا وب سرور آپاچی پس از بررسی این فایل تغییرات را برروی فایل ها و پوشه ها اعمال کند.

برای دسترسی به این فایل نیز ، به علت مخفی بودن آن ، ابتدا به قسمت File manager رفته، سپس بر روی (Show Hidden Files (dot-files کلیک کرده و نهایتا GO را بزنید تا فایل را مشاهده کنید.

در تصویر زیر مشاهده کنید.

 

مشاهده فایل htaccess

 

دستورات و توابع کاربردی htaccess :

  1. محافظت از فایل htaccess :

در جهت افزایش قدرت و امنیت سرور و سایت خود ، برای جلوگیری از دسترسی های غیر مجاز و عدم سرق اطلاعات از شما، در اولین قدم ، اقدام به محافظت از خود فایل htaccess کنید.

برای این عمل، یکی از کد های زیر را در فایل htaccess قرار دهید :

کد اول :

<files ~ "^.*\.([Hh][Tt][Aa])">
order allow,deny
deny from all 
satisfy all 
</files>

 

کد دوم :

<files ".htaccess">

order allow,deny

deny from all

</files>

فرق نمیکند که کد اول یا کد دوم را قرار دهید ، هر کدام عملکرد یکسانی را خواهند داشت .

 

  1. تغییر نام فایل htaccess :

در راستای تامین امنیت خود فایل ، راه دوم و پیشنهادی تغییر نام این فایل است. با کد زیر میتوانید این کار را انجام دهید.

AccessFileName htacc.ess

 

  1. تغییر عنوان و پسوند فایل index :

هنگام بارگذاری سایت ، فایل هایی با پسوند های index.htm , index.php , index.html , index.asp و …

شروع به فراخوانی و لودینگ می کنند ، با استفاده از دستور زیر میتوانید این روند را تغییر دهید.

DirectoryIndex test.html

برای مثال فایل ایندکس ما به عنوان  test.html تغییر می کند ، به کد زیر دقت کنید :

DirectoryIndex test.php test.html

با استفاده از تابع فوق ، هنگام بارگذاری ابتدا test.php شروع به فرخوان می کند و در صورت نبود ، نوبت test.html خواهد شد .

 

  1. غیرفعال کردن دسترسی به فایل های هاست :

تیم امنیت همپاوردپرس ، استفاده از دستور زیر در فایل htaccess را ، به عنوان یک توصیه مهم برای شما دارد.

جهت جلوگیری از سرقت فایل ها ، فولدر ها ، قالب و … سایر اطلاعات درون هاست خود، مانع محکمی برسر راه هکر ها جهت دسترسی به اطلاعات و فایل های هاست شما جهت سرقت و ورود باگ ، ساخته اید.

برای این کار ، دستور به شکل زیر است :

Options All -Indexes

 

  1. ورود به سایت با یا بدون www :

این مورد ، قابل توجه وبمستران و سئوکاران است.

در اولین اقدام از اولین روز های تولد یک سایت ، باید به این نکته توجه داشت که یک سایت، یا با www ، یا بدون www ، امکان لود و بارگذاری ، ایندکس و بررسی توسط کاربران و گوگل را داشته باشد.

علت اصلی آن هم دید موتورهای جستجو به وجود دو دامنه مستقل با محتوای یکسان است! در هر حال پیشنهاد کاربردی ما و سئو کاران ، بارگزاری و ایندکس سایت و آدرس بدون www می باشد.

علت اصلی این پیشنهاد ، کوتاه بودن آدرس بدون www می باشد.

جهت علم به اینکه سایت شما با چه ادرسی در گوگل ایندکس شده است از روش های زیر در جستجو استفاده کنید :

site:www.yoursite.com و site:yoursite.com ; به جای yoursite نام سایت خود را قرار دهید.

حالا تابع زیر برای بستن دامنه سایت و بارگزاری آن بدون www در فایل htaccess می باشد. در لاین دوم و سوم بجای yoursite.com آدرس سایت خود را قرار دهید.

RewriteEngine On
RewriteCond %{HTTP_HOST} !^yoursite\.com$ [NC]
RewriteRule ^(.*)$ http://yoursite.com/$1 [R=301,L]

 

  1. فراخوان زبان پیشفرض یا Default Charset : 

این مورد نیز همچون مورد قبل ، در ارتباط با سئو و بهینه سازی وب است. گاها جهت تعیین زبان پیشفرض سایت که معرف به مرورگرها می باشد را ، در هدر قرار می دهند.

با تابع زیر به راحتی میتوانید زبان مشخصی را تعیین کنید. این دستور تاثیر مثبتی در سئو و بهینه سازی سایت شما خواهد داشت.

# pass the default character set

AddDefaultCharset utf-8

 

  1. جلوگیری از سرقت پهنای باند (hotlinking) ، فایل‌ها و عکس‌ها :

دستور زیر بسیار کاربردی ، هم در جهت جلوگیری از کاهش پنهای باند ، هم مقابله با سرقت کپی رایت است.

با دستور زیر ، مدیران ، نویسندگان و کاربران متفرقه نمی توانند عکس ها فایل ها و محتوا های شما را مستقیما در سایت یا صفحات خود قرار داده و از پهنای باند شما استفاده کنند.

برای عملی ساختن این مورد ، کد زیر را در فایل htaccess قرار دهید :

RewriteEngine On RewriteBase / RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER}!^http://(www\.)site.com/.*$ [NC]

RewriteRule \.(gif|jpg|swf|flv|png)$ /feed/ [R=302,L]

بجای site ، آدرس سایت خود را قرار دهید و بجای فرمت های موجود می توانید از فرمت های مختلف دیگر استفاده کنید.

 

  1. مسدود کردن آی پی آدرس ها :

دستوری کاربردی جهت مقابله با مزاحم ها !

برای بن کردن اسپمرها (spammer) ، محدودیت دسترسی آی پی های مشخص ، و درنهایت مسدود کردن آی پی آدرس های مشکوک و غیر معمولی، بخصوص هنگامی که بطور خاصی در دید و جلوه هستین ، از کد زیر استفاده کنید.

order allow,deny

deny from 192.168.222.6

deny from 224.8.110.12

deny from 172.16.6.90

allow from all

allow from all ، یعنی اجازه دسترسی به همه آی پی ها به جز آی پی مشخص شده.

اعداد بعد از deny from ، ای پی مورد نظر شما هستند ، به هر تعداد که خواستید می توانید کم یا زیاد کنید.

deny from all ، اگر از این عبارت بجای عبارت allow from all استفاده کنید،

محدودیت دسترسی تمامی آی پی های دنیای وب ، حتی خودتان را اعمال کرده اید.

گاها دستور htaccess فوق را با شروع و اتمام تگ های “<Limit GET POST>” و “</Limit>”  مشاهده می کنید.

به علت مشکل و عدم سازگاری بعضی از سیستم ها و قالب ها با این تگ ها ، بطور پیش فرض از آن ها استفاده نمی کنیم.

 

  1. ریدایرکت کردن آدرس با HTTP به HTTPS :

اگر سایت شما مجهز به گواهی ssl می باشد، جهت بارگذاری و فراخوان آدرس سایت خود با HTTPS ، از دستور زیر استفاده کنید.

RewriteCond %{HTTPS} !=on

RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R,L]

 

  1. ایجاد صفحات سفارشی برای خطا های خاص :

این مورد هم تاثیر مثبتی در فرآیند سئو سایت شما دارد. با تابع زیر ، می توانید به ساخت برگه های خاص برای به نمایش درآمدن هنگام بروز خطا در سایت اقدام کنید.

بعد از ساخت صفخات ، برگه های طراحی شده را در کد فراخوان دهید و در پوشه error قرار دهید. اینگونه صفحات طراحی شده شما ، جایگزین صفحات از پیش تعیین شده سرور شما می شود.

ErrorDocument 401 /error/401.php

ErrorDocument 403 /error/403.php

ErrorDocument 404 /error/404.php

ErrorDocument 500 /error/500.php

معرفی چند خطا به عنوان مثال :

خطای 401 : دسترسی به آدرس وارد شده غیر مجاز است.

خطای 403: دسترسی به این آدرس ممنوع می‌باشد.

خطای 404: آدرس مورد نظر یافت نشد.

خطای 500: خطای داخلی سرور بوجود آمده است.

 

  1. محافظت از بخش Admin سیستم وردپرس :

با استفاده از دستور htaccess زیر، با مشخص کردن اجازه دسترسی به آی پی آدرس های معین، از ورود آی پی آدرس های غریبه و خطرناک به این بخش جلوگیری کرده و به محافظت اختصاصی بخش Admin بپردازید.

AuthUserFile /dev/null

AuthGroupFile /dev/null

AuthName "WordPress Admin Access Control"

AuthType Basic

<LIMIT GET>

order deny,allow

deny from all

# whitelist Syed's IP address

allow from 192.168.222.6

# whitelist David's IP address

allow from 192.168.222.5

# whitelist Amanda's IP address

allow from 192.168.222.4

# whitelist Muhammad's IP address

allow from 192.168.222.2

# whitelist Work IP address

allow from 192.168.222.3

آی پی های موجود در کد به عنوان مثال درج شده اند. گاها دستور فوق را با شروع و اتمام تگ های “<Limit GET POST>” و “</Limit>”  مشاهده می کنید.

به علت مشکل و عدم سازگاری بعضی از سیستم ها و قالب ها با این تگ ها ، بطور پیش فرض از آن ها استفاده نمی کنیم.

 

  1. غیرفعال کردن اجرای PHP در برخی مسیرهای وردپرس :

این مورد برای مقابله با هکرها و افزایش امنیت وبسایت وردپرسی استفاده می شود.

فایلی رایج میان هکرها به نام backdoor یا درپشتی وجود دارد که در هاست می سازند و کنترل ورودی را بدست میگیرند. با این دستور ، مانع از اجرای اینگونه فایل ها می شوید.

<Files *.php>

deny from all

</Files>

این فایل را در مسیر های /wp-content/uploads/ و/wp-includes/ آپلود کنید .

 

  1. مسدود سازی ارسال نظرات اسپم در وردپرس :

نظرات و دیدگاه های اسپم و هرز ، به عبارتی هرزنامه بسیار آزاردهنده برای وبمستران است.

از افزونه Akismet برای مقابله با این هنجار استفاده می شود که بار سنگین تری نسبت به یک کد ساده را دارد !

در دستور زیر بجای your-blog آدرس سایت خود را قرار دهید :

RewriteEngine On

RewriteCond %{REQUEST_METHOD} POST

RewriteCond %{REQUEST_URI} .wp-comments-post\.php*

RewriteCond %{HTTP_REFERER} !.*yourblog.com.* [OR]

RewriteCond %{HTTP_USER_AGENT} ^$

RewriteRule (.*) ^http://%{REMOTE_ADDR}/$ [R=301,L]

 

  1. حذف category از آدرس سایت :

گاها برای حذف category از url یا همان آدرس محتوا ، از افزونه های مختلف استفاده می شود. استفاده از تابع زیر در فایل htaccess زیر این کار را برای شما ساده میکند!

RewriteRule ^category/(.+)$ http://www.yourblog.com/$1 [R=301,L]

آدرس سایت خود را جایگزین yourblog کنید.

 

  1. حفاظت از فایل wp-config.php :

جهت حفاظت از فایل wp-config.php و بالا بردن ضریب امنیتی آن جهت جلوگیری از دسترسی هکر ها و به سرقت بردن اطلاعات مهم سایت و هاست شما ، از کد زیر در فایل htaccess استفاده می شود.

<files wp-config.php>

order allow,deny

deny from all

</files>

 

  1. حفاظت از بخش wp-includes :

برای حافظت از این بخش ، درج دستور زیر در فایل ، کفایت میکند ! به همین سادگی.

# Block the include-only files.

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]

 

  1. تغییر فرمت های add mime type) PHP) :

یک مورد کاملا امنیتی جهت مراقبت از فایل ها و اسکریپت های PHP با عوض کردن فرمت های آن ها و شناسایی فرمت های جدید . به عنوان مثال ملاحظه کنید :

AddType application/x-httpd-php .jsp

 

  1. ریدایرکت (Redirect) کردن آدرس :

جهت ریدایرکت کردن آدرسی خاص و معین از تابع ساده زیر بجای کد های مختلف یا افزونه استفاده کنید.

Redirect /Dirold/old.html http://site.com/DirNew/new.html

 

  1. تغییر محدودیت آپلود فایل :

از موارد کاربردی ، تغییر محدودیت حجم یا سایز آپلود در وردپرس می باشد. چه افزایش چه کاهش این مقدار، بجای استفاده از افزونه یا کد های نامعتبر ، از دستور زیر در فایل htaccess استفاده کنید.

php_value upload_max_filesize 30M

عدد مورد نظر را میتوانید حداکثر حجم مورد نظر را تغییر دهید.

 

  1. تغییر محدودیت حجم محتوا :

گاها وبمستران محدودیتی برای حجم محتوایی که جهت پست شدن در سایت منتشر می شود ، اعمال می کنند. این محدودیت از طریق کد زیر قابل اجرا و تغییر است.

php_value post_max_size 4M

 

  1. نمایش پیام request time :

به حداکثر مدت زمان فراخوان یک وب پیج یا صفحه از طرف کاربر ، Request time می گویند. این مدت زمان به فراخور نیاز شما قابل تغییر و تعیین است.

تابع زیر را در فایل htaccess قرار دهید.

php_value max_execution_time 230

 

  1. مدت زمان دریافت اطلاعات :

مدت زمان دریافت اطلاعات ، همان GET و POST نیز ، از طریق دستور زیر قابل تغییر است.

php_value max_input_time 150

 

  1. فعال کردن GZIP compression :

Gzip ، فناوری است که فایل ها و اطلاعات ارسالی از سرور به مرورگر درخواستی(کاربر) را، فشرده و بهینه می کند و تاثیر زیادی در بهینه سازی سرعت بارگذاری صفحات و پهنای باند دارد.

البته باید هاست و سرور سایت شما ، توانایی استفاده از این قابلیت را داشته باشد که از Check GZIP compression بررسی کنید.

دستور زیر ، به فعال کردن این قابلیت کمک می کند.

<ifModule mod_deflate.c>

<filesMatch "\.(css|js|x?html?|php|woff|ttf|png|jpg|gif)$">

SetOutputFilter DEFLATE

</filesMatch>

</ifModule>

فرمت های درج شده دلخواه و قابل تغییر است.

خب ، به پایان این مقاله بسیار کاربری در ارتباط با فایل htaccess رسیدیم.

آخرین نکته قابل توجه ، دقت به این است که دستورات در فایل اچ تی اکسس به حروف بزرگ و کوچک حساسند.

htaccess ، علاوه بر بخش وسیع کاربردی در زمینه امنیت وب و وردپرس و حتی نرم افزار ها، گاها رابطه و تاثیر غیرمستقیمی بر سئو و بهینه سازی وب دارد.

رفع بعضی از محدودیت ها و مشکلات سیستم مدیریت محتوای وردپرس نیز با این دستورات به سادگی قابل حل است.

سعی شد صفر تا صد معرفی این فایل ، معرفی غالب دستورات و توابع موجود پرداخته شود.

امید است محتوای این مقاله مورد توجه شما قرار گرفته باشد.

تیم تخصصی امنیت لدامین