آموزش کامل تنظیمات فایل 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 برای افزایش امنیت در وردپرس، ابتدا باید به این فایل دسترسی پیدا کنید. این فایل در پوشه public_html یا پوشه root سرور سایت شما قرار دارد.
نقطه موجود در ابتدای نام این فایل، نشان دهنده این موضوع است که این فایل در حالت معمولی مخفی است و تنها زمانی قادر به مشاهده و ویرایش اطلاعات آن هستید که گزینه نمایش دادن فایل های مخفی را فعال کرده باشید.
وردپرس به صورت پیشفرض از این فایل برای مشخص کردن پیوندهای یکتا سایت شما استفاده می کند و استفاده خاص دیگری از آن ندارد.
چگونه فایل htaccess. را ایجاد کنید؟
ممکن است شما داخل کنترل پنل هاست خود فایل htaccess. را نداشته باشید. در وردپرس، این فایل با فعال بودن و ویرایش تنظیمات مربوط به پیوندهای یکتا به صورت خودکار اضافه می شود . برای انجام این کار باید در پیشخوان وردپرس به قسمت تنظیمات » پیوندهای یکتا مراجعه کنید.
حال باید یکی از گزینه هایی که در این صفحه موجود می باشد و مد نظر شما است را انتخاب کرده و تنظیمات را ذخیره نمایید. به این شیوه فایل htaccess. در دایرکتوری روت سایت شما به صورت خودکار ایجاد می شود.
روش دیگری که برای ایجاد فایل htaccess. وجود دارد به این صورت است که یک ویرایشگر متنی مانند notepad را باز کنید و محتوای فایل htaccess. را داخل آن وارد کرده و با نام htaccess. آن را ذخیره کنید. سپس این فایل را از طریق کنترل پنل هاست یا FTP client به سرور خود آپلود کنید.
چگونه فایل htaccess. را ویرایش کنید؟
در صورتیکه کنترل پنل هاست شما cpanel باشد، این کنترل پنل به صورت پیش فرض فایل های مخفی را نمایش نمی دهد، بنابراین جهت نمایش فایل های مخفی بصورت زیر اقدام نمایید:
در پوشه File Manager در گوشه بالا سمت راست صفحه بر روی دکمه Settings کلیک کنید تا پنجره پاپ آپ مربوط به تنظیمات File Manager نمایش داده شود.
در پنجره پاپ آپ باز شده تیک گزینه Show Hidden Files را بزنید و روی save کلیک کنید.
پس از ذخیره میتوانید وارد پوشه public_html شوید و فایل htaccess. را مشاهده نمایید. با راست کلیک کردن بر روی فایل htaccess. می توانید آن را ویرایش کنید.
روش دیگری که برای ویرایش فایل htaccess. وجود دارد از طریق افزونه های وردپرس است. افزونه هایی در وردپرس وجود دارد که می توان از آنها برای ویرایش فایل htaccess. از پیشخوان وردپرس استفاده کرد.
WP Htaccess Editor بهترین افزونه برای ویرایش htaccess. از پیشخوان وردپرس است. ویژگی عالی این افزونه این است که در صورت ایجاد مشکل، به شما این امکان را می دهد که یک نسخه پشتیبان را بازگردانی کنید. این افزونه رایگان است و میتوانید آن را از مخزن وردپرس دانلود کنید.
افزونه دیگری که قابلیت ویرایش htaccess. را دارد افزونه Yoast SEO است. Yoast SEO مشهورترین و یکی از بهترین افزونه های سئو وردپرس است. برای استفاده از این قابلیت افزونه Yoast SEO باید نسخه پرمیوم آن را داشته باشید. سپس در منوی اصلی به قسمت tools و File Editor بروید.
محتویات فایل 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 برای افزایش امنیت ، یکی از مهم ترین بخش ها برای ایجاد تغییرات در سرور سایت مخصوصاً در بحث امنیت است.
توصیه ما به شما این است که قبل از شروع هر تغییری حتما از فایل htaccess. اولیه خود بکاپ بگیرید تا اگر مشکلی پیش آمد بتوانید با قرار دادن کد های قبلی، مشکل را برطرف نمایید. برای راهنمایی بیشتر و آشنایی با روشهای بکاپ گیری به مقاله بهترین افزونه های پشتیبان گیر وردپرس مراجعه بفرمایید.
نحوه تنظیمات فایل htaccess برای افزایش امنیت
۱- جلوگیری از دسترسی به فایل های مهم
فایل wp-config.php برای اعمال کانفیگ بر روی وردپرس می باشد و مهم ترین اطلاعات سایت مانند اطلاعات دیتابیس سایت در آن قرار دارد و اگر شخصی به آن دسترسی پیدا بکند می تواند سایت شما را براحتی هک کند.
شما می توانید تنظیمات فایل htaccess را به گونه ای انجام دهید که این فایل و فایل های مهم دیگر مانند php.ini و نیز خود htaccess. از دسترس خارج شود.
برای این کار گافی است کد زیر را در فایل htaccess. وارد کنید. با اعمال این کد اجازه دسترسی به فایل های مهم را می بندید.
<FilesMatch "^.*(error_log|wp-config\.php|php.ini|\.[hH][tT][aApP].*)$"> Order deny,allow Deny from all </FilesMatch>
در صورت لزوم نام فایل php.ini را درست کنید (ممکن است php5.ini یا php7.ini باشد). اطمینان حاصل کنید که کدها را خارج BEGIN WordPress# و END WordPress# قرار می دهید. هر کدی داخل این فضا توسط وردپرس ویرایش می شود و ممکن است تغییرات شما اعمال نشود.
اگر می خواهید فقط مدیریت سایت به فایل wp-config.php دسترسی داشته باشد. کافی است کد زیر را وارد کنید.
# Protects wp-config <Files wp-config.php> Order Allow,Deny Allow from xx.xx.xx.xxx Deny from all </Files>
در کد بالا، خط Allow from xx.xx.xx.xxx به جای xx.xx.xx.xxx آدرس IP خودتان را وارد کرده و محتویات فایل htaccess. در وردپرس را بروز کنید.
۲- تنظیمات فایل htaccess برای جلوگیری از دسترسی به فایل های PHP
شما می توانید با اعمال کد زیر، اجازه دسترسی به فایل های PHP و تزریق بدافزارها در آنها را به دیگران ندهید.
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]
۳- جلوگیری از اجرا شدن فایل های PHP
یکی از مکانهایی که هکرها برای آپلود بدافزارها از آن استفاده می کنند، فایل wp-content/uploads است. اگر هکر موفق به هک کردن سایت شما شود می توانید دسترسی او به فایل wp-content/uploads را ببندید و مانع از از اجرای کدهای بد در سایت خود شوید.
برای این کار کافی است قطعه کد زیر را به فایل htaccess. اضافه کنید:
<Directory "/var/www/wp-content/uploads/"> <Files "*.php"> Order Deny,Allow Deny from All </Files> </Directory>
۴- تنظیمات فایل htaccess برای غیرفعال کردن تزریق کدهای مخرب
از قطعه کد زیر برای جلوگیری از تزریق کدهای مخرب توسط هکرها در داخل فایل های PHP موجود خود استفاده کنید.
Options +FollowSymLinks RewriteEngine On RewriteCond %{QUERY_STRING} (<|%3C).*script.*(>|%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]
۵- افزایش امنیت پوشه wp-includes
پوشه wp-includes محل فایل های هسته وردپرس است که هیچ کاربری نیازی به دسترسی به این پوشه ندارد. برای اینکه مطمئن شوید که این اتفاق نمی افتد، از قطعه کد زیر استفاده کنید.
<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>
نگران فایل های قالب و افزونه های سایت خود نباشید. این فایل ها در محل دیگری قرار دارند.
اگر می خواهید اطلاعات بیشتری درباره سطح دسترسی افراد مختلف به فایل ها و فولدرهای سایت خود داشته باشید مقاله آموزش تعیین سطح دسترسی فایل ها و فولدرها در وردپرس را مطالعه کنید.
۶- ایجاد محدودیت در دسترسی به بخش مدیریت وردپرس
شما می توانید تنظیمات فایل htaccess. را به گونه ای پیکربندی کنید که صفحه لاگین وردپرس شما محدود به IP های خاصی باشد. این کار مخصوص کسانی است که از آی پی ثابت استفاده می کنند. برای انجام آن کد زیر را کپی کرده و در فایل htaccess. پیست کنید.
ErrorDocument 401 default ErrorDocument 403 default <Files wp-login.php> Order deny,allow Deny from all Allow from 198.101.159.98 </Files>
آدرسهای IP که در کد بالا به عنوان نمونه قرار داده شده است را با آدرس های مدنظر خودتان عوض کنید. می توانید آدرسهای دیگری را با کپی و پیست کردن خط Allow from … اضافه کنید. هرکس غیر از آدرسهای IP مشخص شده در این کد به صفحه خطای 404 ارجاع داده می شود.
۷- تنظیمات فایل htaccess برای قفل کردن بعضی از آدرسهای IP
به همین روش می توانید بعضی از آدرسهای IP که سعی دارند کارهای خرابکارانه در سایت شما انجام دهند را بلاک کنید. اگر متوجه چنین چیزی شدید (به عنوان مثال از لاگ های سرور) با اضافه کردن کد زیر به فایل htaccess. می توانید آنها را بلاک کنید. آدرسهای IP که در کد زیر به عنوان نمونه قرار داده شده است را با آدرس های مدنظر خودتان عوض کنید.
order allow,deny deny from 456.123.8.9 allow from all
۸- جلوگیری از نمایش پوشه ها (Directory Browsing)
به صورت پیش فرض همه بازدیدکنندگان می توانند پوشه های هر سایت وردپرسی را بررسی کرده و فایل های آن را مشاهده کنند. کافی است وارد آدرس your-site.com/wp-content/uploads شوند. لیست کاملی از فایل ها و پوشه های شما در آنجا قابل مشاهده است.
اگرچه این مشاهدات امکان ایجاد تغییری را برای هکرها به وجود نمی آورد اما دانستن ساختار سایت شما می تواند به آنها کمک می کند. برای غیرفعال کردن این دسترسی کد زیر را در فایل htaccess. وارد کنید.
Options All -Indexes
۹- تنظیمات فایل htaccess برای افزایش امنیت پوشه wp-includes
پوشه wp-includes مکان قرارگیری فایل های مهم وردپرس است . با جلوگیری از دسترسی های غیرمجاز به این پوشه ، می توانید جلوی سو استفاده های احتمالی از محتویات آن را بگیرید .
برای افزایش امنیت پوشه wp-includes کافی است کد زیر را در فایل htaccess. قرار دهید .
<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>
۱۰- تنظیمات فایل htaccess برای جلوگیری از مشاهده اطلاعات کاربران با ID آنها
وقتی یک بازدیدکننده وارد آدرس your-site.com/?author=1 سایت شما شود ، به صفحه اطلاعات و نوشته های کاربری که دارای شناسه کاربری یا ID ۱ است منتقل می شود . این صفحه شامل نام کاربری است که کاربر با آی دی ۱ دارد .
بازدیدکننده با این روش به راحتی می تواند نام کاربری کلیه کاربرهای سایت شما را پیدا کند . این روش با عنوان username enumeration شناسایی می شود .
اگر هکر نام کاربری کاربران سایت را پیدا کند، تنها مورد دیگری که نیاز است پیدا کند، رمز عبور است .
با قرار دادن کد زیر در فایل htaccess. ، می توانید جلوی مشاهده اطلاعات کاربران با آی دی آن ها را بگیرید.
RewriteCond %{QUERY_STRING} author=d RewriteRule ^ /? [L,R=301]
۱۱- الزامی کردن SSL
این موضوع که گوگل به وب سایت های امن رنکینگ بالاتری می دهد نشان دهنده اهمیت استفاده از گواهینامه SSL برای وب سایت ها است. داشتن گواهینامه SSL نه تنها رنکینگ سایت ها را افزایش می دهد بلکه نقش مهمی در تأمین امنیت وب سایت ها در برابر سرقت اطلاعات آنها ایفا می کند. برای کسب اطلاعات بیشتر درباره گواهی نامه SSL و چگونگی فعال کردن آن برای وب سایت وردپرسی خود به مقاله آموزش نصب SSL در وردپرس مراجعه کنید.
با استفاده از کد زیر در صورتی که کاربر آدرس سایت را وارد کند به صورت خودکار به برگه دارای گواهی SSL منتقل می شود.
SSLOptions +StrictRequire SSLRequireSSL SSLRequire %{HTTP_HOST} eq "www.you-site.com" ErrorDocument 403 https://www.your-site.com
فراموش نکنید که مقادیر www.your-site.com موجود در کد بالا را با آدرس URL خود جایگزین کنید.
۱۲- تنظیمات فایل htaccess برای جلوگیری از سرقت تصاویر (Image Hot Linking) در وردپرس
وقتی یک بازدیدکننده آدرس تصویر شما را کپی کرده و به جای آپلود آن در سایت خود ، از آن استفاده می کند در واقع از پهنای باند شما سوءاستفاده می نماید . به این حالت hot linking می گویند. برای جلوگیری از Hotlinking (سرقت تصاویر) در وردپرس راه های زیادی وجود دارد که یکی از آنها استفاده از فایل htaccess. است.
;کافی است کد زیر را در فایل htaccess. قرار دهید.
RewriteEngine On RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http://(www.)?your-site.com/.*$ [NC] RewriteRule .(gif|jpg)$ http://www.your-site.com/hotlink.gif [R,L]
قسمت your-site.com در خط ۲ را با آدرس سایت خود جایگزین کنید . همچنین مقدار http://www.your-site.com/hotlink.gif موجود در خط ۳ را با آدرس تصویری که می خواهید از آن محافظت نمایید جایگزین کنید .
۱۳- جلوگیری از دزدیده شدن فایل های زبان قالب ها و افزونه ها
برای این کار کافی است کد زیر را در فایل htaccess. قرار دهید. با این کار کلیه دسترسی های خارجی و غیر مجاز به فایل های زبان پوسته ها و افزونه ها ممنوع می شود.
<Files *.po> deny from all </Files> <Files *.mo> deny from all </Files>
امیدواریم این آموزش مورد توجه و استفاده شما قرار گرفته باشد. آیا کدهای دیگری می شناسید که در تنظیمات فایل htaccess مورد استفاده قرار گیرد و باعث افزایش امنیت وب سیات وردپرسی تان شود؟ تا چه حد در برقراری امنیت به شما کمک کرده است؟دیدگاه های خود را با ما در میان بگذارید.
خیلی ممنون
عالی بود
خوشحالیم که مورد توجه شما قرار گرفته
مرجع دستورات فایل .htaccess رو از کجا میشه دانلود کرد؟
باید به سایت آپاچی که وب سرور متعارف سایت های php مانند وردپرس هستش، سر بزنید…
ولی من برای شما آدرس دقیق رو قرار میدم که با htaccess و دستورات و کلیات اون آشنا بشید…
https://www.askapache.com/htaccess
ای کاش معادل همین کد ها رو برای هاست ویندوز هم در این صفحه قرار میدادید برای web.config چون اگر هاست ویندوز باشد htaccess اصلا کار نخواهد کرد.
ممنون
در سایت مدیروردپرس سعی شده که نیازهای کاربران بصورت تخصصی رفع و رجوع شود، بدین منظور توصیه می کنم از وردپرس در سرورهای ویندوزی استفاده نکنید چرا که هم هزینه ی گزافی برای شما دارد و هم اینکه راندمان خوبی نخواهد داشت، دلیل ما بریا استفاده از لینوکس، آپاچی و… صرفا بخاطر خود کاربر بوده است…
سلام
خیلی عالی بود اما بعضی کد ها ایراد داره و اگه کسی بلد نباشه از کنترل پنل فایل رو ادیت کنه مشکل بر میخوره مثل شماره ۹ و ۱۲
اما مطلب خوبی بود…
سلام
کد شماره ۳ را که اضافه میکنیم سایت بالا نمیاد و خطای ۴۰۳ میده
چکار کنیم؟
باید در انتخاب کد های مورد نظر که در htaccess عمل می کنند احتیاط کامل را مد نظر داشته باشید، چرا که این کد مرتبط با تنظیمات سرور شما عمل خواهد کرد…
بهتر است با مدیر هاست خود تماس بگیرید چرا که کد شماره ۳ برای محدود کردن بارگذاری فایل در دایرکتوری های خاص استفاده می گردد
ممنون از شما
من کد هارو اونایی که مد نظر بود رو وارد کردم سایتم بدون مشکل بالا میاد و موردی نداره!
این یعنی مشکلی نیست دگ درسته ؟
سلام … نه دوست عزیز مشکلی نیست … موفق باشید
با سلام من توی تنظیمات پیوند یکتا رفتم و یک گزینه هم انتخاب کردم احالا فایل htaccess کجا قرار داره؟
این ارور توی وردپرسم هستش چطوری میتونم برطرفش کنم؟atal error: Maximum execution time of 30 seconds exceeded in C:\xampp\htdocs\jahandoostkima.com\wp-includes\Requests\Transport\cURL.php on line 463
سلام میلاد عزیز .. وقت بخیر .. فایل htaccess. در فولدر root سایت شما که معمولاً public_html هست قرار داره .. برای رفع خطا هم می تونید به مقاله رفع خطای Maximum execution time exceeded مراجعه کنید
سلام خسته نباشید ممنون از اموزش عالیتون , یک سوالی از خدمت شما داشتم تمامی کد که شما در این اموزش عرض کردید رو کسانی که از ووردپرس استفاده می کنند باید داخل تگ که در فایل htaccess قرار بدیم یا خارج ان ممنون میشم اگر راهنماییم کنید.
سلام مصطفی عزیز .. وقت بخیر .. همانطور که در متن گفته شده، کدها را خارج BEGIN WordPress# و END WordPress# قرار دهید