آموزش استفاده از فایل htaccess. در وردپرس

htaccess. یا hypertext access فایل پیکربندی مربوط به وب سرور آپاچی است که به کمک آن می توانید رفتار و عملکرد وب سایت تان را بسته به نیازی که دارید تغییر دهید. htaccess. به شما این امکان را می دهد تا پیکربندی های پیش فرض Apache را بازنویسی یا Override کنید. همچنین این فایل قدرتمند امکان اعمال پیکربندی های مربوط به یک دایرکتوری(Directory) و تمام زیر دایرکتوری هایی که در آن مسیر قرار دارند را فراهم می کند، نکته جالب اینجاست که هر دایرکتوری می تواند پیکربندی مختص به خود را داشته باشد.

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

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

قبل از اعمال هرگونه تغییری ابتدا یک نسخه پشتیبان از htaccess. تهیه کنید، هر گونه تنظیم اشتباه منجر به خطای ۵۰۰(Internal Server Error) خواهد شد و وب سایت تان را از دسترس خارج خواهد کرد.

۱- مشاهده فایل htaccess با استفاده از نرم افزار FileZilla

در صورتی که تغییرات وب سایت تان را از طریق FTP و نرم افزار FileZilla ارسال می کنید، می توانید برای مشاهد فایل htaccess از منوی Server گزینه Force showing hidden file را انتخاب کنید.

استفاده از filezilla client برای مشاهده htaccess

۲- مشاهده فایل htaccess از طریق Cpanel

پس از ورود به cPanel وارد دایرکتوری public_html شوید، سپس با کلیک بر روی گزینه Setting و انتخاب “(Show Hidden Files (dotfiles” فایل های مخفی که یکی از آنها htaccess نشان داده خواهد شد.

نمایش فایل htaccess در cpanel

فایل htaccess را پیدا نمی کنید؟

در صورتی که از سیستم مدیریت محتوای وردپرس استفاده می کنید ممکن است فایل htaccess ایجاد نشده باشد. برای این منظور کافی است از پنل مدیریت گزینه “تنظیمات” و “پیوندهای یکتا(Permalinks)” را انتخاب کنید، حال در صفحه باز شده بدون هیچ تغییری فقط روی گزینه “ذخیره تغییرات” کلیک نمائید.

پیوندهای یکتا در وردپرس

 

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

مشاهده محتوای htaccess در phpstorm

فایل htaccess چه کاربردهایی دارد؟

برای ایجاد و اعمال تغییر در فایل htaccess می توانید از هر نوع ویرایشگر ساده ای مانند Notepad ویندوز یا نرم افزارهای حرفه ای همچون WebStorm یا PHPStorm استفاده کنید. به این نکته توجه داشته باشید که سیستم عامل ویندوز اجازه نمی دهد فایل بدون پسوند ایجاد کنید، برای اینکه بتوانید این کار را انجام دهید در هنگام ذخیره فایل نام آن را بین به صورت “htaccess.” قرار دهید.

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

wp-config.php یکی از مهمترین ترین فایل های هسته وردپرس است، در این فایل تنظیمات مهمی مثل نام، نام کاربری و کلمه عبور پایگاه داده MySQL ذخیره شده است. برای حفظ امنیت wp-config و جلوگیری از دسترسی غیرمجاز خطوط زیر را به htaccess اضافه کنید.

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

در مطلب آموزشی کانفیگ وردپرس: هر آنچه باید درباره فایل wp-config.php بدانید! بخش های مختلف این فایل بررسی شده است.

۲- حفاظت از پنل مدیریتی وردپرس

پنل مدیریتی وردپرس(Admin Area) امکان انجام کارهای مدیریتی و نظارت بر وب سایت تان را فراهم می کند، به عبارتی دیگر این بخش سکان هدایت وردپرس را برعهده دارد و در صورتی که افراد غیرمجاز به آن دسترسی پیدا کنند مشکلات جدی برایتان بوجود خواهند آورد. یکی از اقدام امنیتی که در این بخش می توانید انجام دهید مشخص کردن IP هایی است که می توانند به پنل وردپرس دسترسی داشته باشند.

برای این منظور به جای xx.xx.xx.xxx آدرس IP مدنظرتان را قرار دهید.

AuthUserFile /dev/null
AuthGroupFile /dev/null
AuthName " Protect WordPress Admin Area "
AuthType Basic
<LIMIT GET>
order deny,allow
deny from all
# Home IP address
allow from xx.xx.xx.xxx
# Work IP address
allow from xx.xx.xx.xxx
</LIMIT>

۳- تغییر حداکثر حجم بارگذاری فایل

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

در تصویر زیر حداکثر اندازه مجاز آپلود فایل ۲ مگابایت است و وردپرس مانع آپلود فایل “testfile.rar” شده است.

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

برای تغییر این مقدار پیش فرض بدین صورت عمل کنید.

php_value upload_max_filesize 64M
php_value post_max_size 64M
php_value max_execution_time 300
php_value max_input_time 300

۴- غیر فعال کردن XML-RPC

در دایرکتوری نصب وردپرس فایلی به نام xmlrpc.php وجود دارد که اجازه دسترسی و انجام کارهای مدیریتی از طریق برنامه های موبایل یا ابزارهای آنلاین را فراهم می کند. بسیاری از متخصصان امنیتی پیشنهاد می کنند در صورتی که از این قابلیت استفاده نمی کنید آن را غیرفعال نمائید.

برای اینکار خطوط زیر را به htaccess اضافه کنید.

<Files xmlrpc.php>
order deny,allow
deny from all
</Files>

۵- مسدود کردن اسکن اطلاعات کاربری در وردپرس

Brute Force یکی از متداولترین حملاتی است که برای نفوذ به بخش مدیریت وردپرس انجام می شود، در این نوع حمله فرد مهاجم تلاش می کند با اجرای اسکریپت هایی بر روی بخش لاگین سایت نام کاربری و کلمه عبور ورود به مدیریت وردپرس را بدست آورد. برای آشنایی بیشتر با این حمله مقاله تغییر آدرس ورود به مدیریت وردپرس را مطالعه فرمائید.

در نهایت تنها کاری که شما باید انجام دهید قرار دادن خطوط زیر در htaccess است.

RewriteEngine On
RewriteBase /
RewriteCond %{QUERY_STRING} (author=\d+) [NC]
RewriteRule .* - [F]

۶- بلاک کردن IP های مشکوک

همیشه و در همه حال به اتفاقات مشکوک و مخربی که در محدوده کسب و کارتان اتفاق می افتد توجه کامل داشته باشید و از افزونه های قدرتمندی مانند Wordfence Security استفاده کنید. در گشت زنی هایی که انجام می دهید ممکن است با IP هایی مواجه شوید که اسپم پراکنی کرده و یا بیش از حد مجاز به سمت سایت تان درخواست ارسال می کنند. بلاک کردن این IPها روش مناسبی برای تامین امنیت وب سایت تان خواهد بود.

برای این منظور خطوط زیر را پس از جایگزینی xxx.xxx.xx.x با آدرس مورد نظرتان به فایل htaccess اضافه کنید.

<Limit GET POST>
order allow,deny
deny from xxx.xxx.xx.x
allow from all
</Limit>

در مقاله آموزشی امنیت وردپرس: بلاک کردن IP های مشکوک در رابطه با تکنیک های دیگر بلاکینگ صحبت کردیم.

۷- انتقال دائمی آدرس (Redirect permanent)

تا به حال شده است که به وب سایتی مراجعه کنید و با پیغام “صفحه مورد نظر یافت نشد” مواجه شوید. خطای ۴۰۴ حس ناخوشایندی از تجربه کاربری را در ذهن بازیدکنندگان ثبت می کند. اگر صفحه ای را حذف کرده اید حتما با یک پیغام مناسب عدم وجود آن را به کاربر اطلاع دهید یا آن را به یک مقصد دیگر ریدایرکت کنید.

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

Redirect 301 /postlist/   http://www.example.com/newpostlist
Redirect 301 /category/wordpress-tuts/    http://www.example.com/category/ wordpress-tutorials/

۸- غیرفعال کردن اجرای پی اچ پی (PHP Execution)

در محل نصب وردپرس دایرکتوری های مهمی مثل uploads و wp-includes وجود دارد که یک هکر می تواند با قرار دادن Backdoor در این مسیرها کنترل سایت تان را به طور کامل در دست گرفته و به اطلاعات حساس شما دسترسی پیدا کند، برای حفظ امنیت وردپرس دو فایل htaccess با کدهای زیر در این دایرکتوری ها قرار دهید.

این تنظیم ممکن است افزونه های پشتیبان گیری مانند Updraft Plus را با مشکل مواجه کند.

<Files  *.php>
deny from all
</Files>

مثالی از پیاده سازی فایل htaccess. در یک پروژه وب

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

مثالی از پیاده سازی htaccess

 

ابتدا در مرورگر وب آدرس http://localhost/htaccesstest را وارد می کنیم، همانطور که در تصویر زیر می بینید امکان مرور فایل های موجود در هر دایرکتوری فراهم شده است، این نقطه ضعف از لحاظ امنیتی برای وب سایت ما بسیار خطرناک خواهد بود.

directory browsing

 

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

<IfModule mod_rewrite.c>
  Options -Multiviews
  RewriteEngine On
  RewriteBase /htaccessTest/public
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule  ^(.+)$ index.php [QSA,L]
</IfModule>

 

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

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule ^$ public/ [L]
    RewriteRule (.*) public/$1 [L]
</IfModule>

 

هنوز کارمان تمام نشده است و باید امنیت مهمترین قسمت این پروژه یعنی دایرکتوری app را فراهم کنیم، پس یک فایل دیگر در پوشه app ایجاد می کنیم. کد زیر قابلیت مرور دایرکتوری را غیر فعال می کند، برای آشنایی بیشتر با این امکان مقاله امنیت وردپرس: چگونه Directory Browsing را غیرفعال کنیم؟ را مطالعه کنید.

Options -Indexes

 

در نهایت با ایجاد سه فایل پیکربندی توانستیم سیاست های دسترسی و امنیتی مورد نیازمان را به وب سرور آپاچی تحمیل کنیم.

اعمال امنیت با htaccess

جمع بندی

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

نظرات و سوالات کاربران

پاسخی بگذارید

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