آموزشسی پنلکنترل پنل ها

htaccess چیست و نحوه تنظیمات آن

آشنایی با تنظیمات فایل htaccess برای افزایش امنیت

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

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

زمانی که یک فایل htaccess. را در یک دایرکتوری قرار می‌دهیم این فایل توسط وب سرور apache شناسایی و اجرا می‌شود. یک فایل htaccess. می‌تواند به وب سرور بگوید که چطور انواع مختلف اطلاعات را نمایش دهد و چگونه به سربرگ‌های متعدد درخواست‌های HTTP رسیدگی کند. این فایل در زمان عدم دسترسی به root سرور برای کنترل آپاچی بسیار مفید است.

دسترسی هایی که با استفاده از این فایل می توانید به آنها برسید شامل موارد زیر است:

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

تنظیماتی که در فایل htaccess. قرار داده می شود بر روی پوشه جاری و زیر پوشه های آن اعمال می گردد و با قرار دادن یک فایل htaccess. دیگر در زیر پوشه ای خاص تنظیمات پوشه والد نقض می شود.

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

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

در این مقاله به صورت جامع و کامل نحوه تنظیمات فایل htaccess برای افزایش امنیت را بررسی می کنیم.

htaccess چیست؟

.htaccess یک فایل با محیط متنی می‌باشد که جهت پیکربندی پوشه‌های مختلف در  بعضی از وب سرورها از جمله آپاچی به کار می‌رود. بسیاری از کارهایی که نیاز به کدنویسی‌های پیشرفته دارند، تنها با نوشتن یک خط کد در این فایل ممکن می‌گردند.

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

فایل htaccess کجاست ؟ نحوه دسترسی به htaccess  چگونه است؟

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

در صورتیکه کنترل پنل  هاست شما  cpanel می باشد، این کنترل پنل به صورت پیش فرض فایل های مخفی را نمایش نمی دهد، بنابراین جهت نمایش فایل های مخفی بصورت زیر اقدام نمایید:

در پوشه File Manager در گوشه بالا سمت راست صفحه بر روی دکمه Settings کلیک کنید تا پنجره پاپ آپ مربوط به تنظیمات فایل منیجر نمایش داده شود.

در پنجره پاپ آپ باز شده تیک گزینه Show Hidden Files را بزنید و روی save کلیک کنید.

با این تغییر پس از ذخیره می‌توانید وارد پوشه  public_html شوید و فایل htaccess را مشاهده نمایید . در پوشه Home نیز سایر پوشه های مخفی نظیر Trash که فایل های حذف شده در آن قرار دارد قابل مشاهده خواهد بود.

تنظیم htaccess، امنیت و مدیریت بهینه وردپرس با آن

در صورتی که تمایل دارید تنظیمات روی تمام فولدرهای سایت اعمال شود ، از فایل htaccess موجود در فولدر public_html استفاده کنید. فایل htaccess ، در سرور به صورت فایل مخفی (Hidden) هست.

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

برای جلوگیری از سرقت اطلاعات خود فایل htaccess کد زیر را در ابتدای فایل htaccess قرار دهید:

<files ".htaccess">
 order allow,deny
 deny from all
 </files>

جلوگیری از سرقت فایلهای و فولدرهای دران هاست :

بیشتر وقتها اطلاعاتی مثل فایل‌های قالب اختصاصی که بر روی هاست قرار دارند و یا فایل‌هایی که به صورت zip شده در هاست خود ذخیره کرده‌اید به راحتی کشف و به سرقت می رود. برای جلوگیری از این امر کد زیر را در انتهای فایل htaccess قرار دهید.

Options All -Indexes

معرفی زبان پیشفرض (DefaultCharset) :

جهت تعیین زبان پیش‌فرض استفاده شده در مرورگرها، کدهای زیر را در قسمت هدر سایت قرار دهید. این عمل تاثیر خوبی روی سئو (SEO) سایت نیز دارد.

# pass the default character set
 AddDefaultCharset utf-8

تعیین صفحات سفارشی روی صفحات خطا :

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

ErrorDocument 401 /error/401.php
ErrorDocument 403 /error/403.php
ErrorDocument 404 /error/404.php
ErrorDocument 500 /error/500.php

نمونه ای از چند خطای آپاچی ( Apache):

  • خطای 401 : دسترسی به آدرس وارد شده غیر مجاز است.
  • خطای 403: دسترسی به آدرس ممنوع می‌باشد.
  • خطای 404: آدرس مورد نظر یافت نشد.
  • خطای 500: خطای داخلی سرور بوجود آمده است.

فیلترینگ (banned) اسپمرها با .htaccess (محدودیت دسترسی از طریق IP)

با توجه به بالا بودن میزان دیدگاه‌های اسپم مخصوصا روی سایت های پربازدید، بهتر است ترجیحا آی پی آنها را مسدود نمایید.

<Limit GET POST>
 order allow,deny
 deny from 200.49.176.139
 allow from all
 </Limit>

دستور “allow from all” بدین معناست که همه آی‌پی‌ها بجز آی‌پی‌های مسدود شده دسترسی دارند. اگه بخواهید فقط به IP‌های خاصی اجازه دسترس دهید کافی است به کدی نظیر “allow from IP” را نوشته و به جای IP ، آی پی مورد نظر خود را وارد کنید.

با دستور “deny from IP” هم اجازه دسترسی آن آی پی را محدود می نمایید. همچنین می توانید هر تعداد IP زیرهم اضافه کنید. با این کد هیچ آی پی دسترسی نخواهد داشت.

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

جلوگیری از ارسال دیدگاه اسپم در وردپرس :

افزونه اکیسمت افزونه شناخته شده‌ای در زمینه جلوگیری از ارسال اسپم هست که در بسته اصلی خود وردپرس هم وجود دارد، اما می توانید با استفاده از کد زیر از ارسال هرزنامه به وبسایتتان جلوگیری کنید. دقت داشته باشید که در خط چهارم بجای yourdomain.com آدرس سایت خود را وارد کنید.

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]

حذف category از آدرس سایت وردپرسی :

ممکن است بخواهید عبارت /category/ را از آدرس سایت وردپرسی خود حذف کنید. این کار علاوه بر اینکه باعث کوتاه شدن شدن url میشود تا حدودی هم در سئو سایت موثر است.

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

تغییر عنوان و پسوند فایل پیش‌فرض index در هنگام بارگذاری :

حتما تا حالا دقت نمودید که در هنگام فراخوانی یک آدرس، فایل های پیش فرض نظیر index.html یا index.php بارگذاری می شوند .

بطور مثال در صورت نیاز به تغییر فایل پیش فرض، با قرار دادن کد زیر هنگام فراخوانی به دنبال file.php میگردد و در صورت پیدا نکردن آن، به دنبال file.html خواهد بود.

DirectoryIndex file.php file.html

 سایت با www یا بدون www :

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

جهت استفاده از سایت بدون www، می توانید از خطوط زیر استفاده نمایید:

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

جهت استفاده از سایت با www، می توانید از خطوط زیر استفاده نمایید:

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

بالا بردن امنیت فایل wp-config.php در htaccess:

جهت جلوگیری از سرقت اطلاعات حیاتی و جلوگیری از دسترسی به اطلاعات پایگاه داده سایت (Database) کد زیر را در فایل htaccess قرار دهید .

<files wp-config.php>
 order allow,deny
 deny from all
 </files>

مخفی کردن فرمت ها/شناساندن فرمت‌های جدید (add mime type) :

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

 AddType application/x-httpd-php .asp .jsp

فرض کنید می‌خواهید از shtml/ssl در سایتتون استفاده کنید و نیاز به شناساندن این فرمتها به آپاچی دارید در این صورت از مشابه کدهای زیر استفاده نمایید :

AddType text/html .shtml
AddHandler server-parsed .shtml
Options Indexes FollowSymLinks Includes

ریدایرکت (Redirect):

جهت اینکار از کدهای زیر استفاده نمایید :

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

محدود کردن نوع فایلهای قابل اجرا و نمایش :

برای حفظ امنیت و اطلاعات سایت می‌توانید پسوند فایل‌هایی را تعیین کنید :

Options +FollowSymlinks
RewriteEngine On
rewritecond %{REQUEST_FILENAME} !^(.+).css$
rewritecond %{REQUEST_FILENAME} !^(.+).js$
rewritecond %{REQUEST_FILENAME} !file.php$
RewriteRule ^(.+)$ /deny/ [nc]

با کد بالا کاربر فقط اجازه باز کردن فایل هایی با پسوند css , js و php رو داشته و در صورت درخواست سایر پسوندها به پوشه deny. ریدایرکت می شود.

ایجاد محدودیت در آپلود فایل :

با کد زیر می توان حداکثر حجم فایل قابل آپلود را تنظیم نمود.

php_value upload_max_filesize 20M

ایجاد محدودیت در حجم پست ارسالی :

با کد زیر می توان حداکثر حجم هر پست را تعیین کرد.

php_value post_max_size 2M

نمایش پیغام requast time در بازه زمانی مشخص :

requast time به معنای حداکثر زمان درخواست فراخوانی یک صفحه هست و با کد زیر میتوان آن را تغییر داد :

php_value max_execution_time 200

حداکثر زمان دریافت اطلاعات POST و GET :

php_value max_input_time 250

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

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

 RewriteEngine On
 RewriteCond %{HTTP_REFERER} !^$
 RewriteCond %{HTTP_REFERER} !^http://(www\.)?site.com/ .*$ [NC]
 RewriteRule \.(gif|jpg|swf|flv|png)$ /feed/ [R=302,L]

فعال کردن قابلیت Gzip :

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

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

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

# BEGIN Compress text files
 <ifModule mod_deflate.c>
 <filesMatch "\.(css|js|x?html?|php|woff|ttf|png|jpg|gif)$">
 SetOutputFilter DEFLATE
 </filesMatch>
 </ifModule>
 # END Compress text files

مدیریت Cache فایلها :

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

# BEGIN Expire headers
 <ifModule mod_expires.c>
 ExpiresActive On
 ExpiresDefault "access plus 1 month"
 ExpiresByType image/x-icon "access plus 1 year"
 ExpiresByType image/jpeg "access plus 1 month"
 ExpiresByType image/png "access plus 1 month"
 ExpiresByType image/gif "access plus 1 month"
 ExpiresByType image/jpg "access plus 1 month"
 ExpiresByType application/x-shockwave-flash "access plus 1 month"
 ExpiresByType text/css "access plus 1 month"
 ExpiresByType text/javascript "access plus 1 year"
 ExpiresByType application/javascript "access plus 1 year"
 ExpiresByType application/x-javascript "access plus 1 year"
 ExpiresByType text/html "access plus 600 seconds"
 ExpiresByType application/xhtml+xml "access plus 600 seconds"
 ExpiresByType font/ttf "access plus 1 year"
 ExpiresByType font/woff "access plus 1 year"
 </ifModule>
 # END Expire headers
 # BEGIN Cache-Control Headers
 <ifModule mod_headers.c>
 <filesMatch "\.(ico|jpe?g|png|gif|swf|woff|ttf)$">
 Header set Cache-Control "max-age=2592000, public"
 </filesMatch>
 <filesMatch "\.(css)$">
 Header set Cache-Control "max-age=2592000, public"
 </filesMatch>
 <filesMatch "\.(js)$">
 Header set Cache-Control "max-age=2592000, private"
 </filesMatch>
 <filesMatch "\.(x?html?|php)$">
 Header set Cache-Control "max-age=600, private, must-revalidate"
 </filesMatch>
 </ifModule>
 # END Cache-Control Headers
 # BEGIN Turn ETags Off
 <ifModule mod_headers.c>
 Header unset ETag
 </ifModule>
 FileETag None
 # END Turn ETags Off
 # BEGIN Remove Last-Modified Header
 <ifModule mod_headers.c>
 Header unset Last-Modified
 </ifModule>
 # END Remove Last-Modified Header

حل مشکل تعداد آیتم های فهرست وردپرس :

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

<IfModule mod_php.c>
 php_value suhosin.post.max_vars 7000
 php_value suhosin.request.max_vars 7000
 </IfModule>

-افزایش امنیت محتوای فولدر wp-includes :

جهت این کار کافی است کد زیر را در htaccess قرار دهید :

# 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]
برچسب ها
نمایش بیشتر

نوشین عابدی

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

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا
بستن