امنیت وردپرس: چگونه Directory Browsing را غیرفعال کنیم؟

اکثر افراد می توانند وب سایت وردپرسی خود را بدون اطلاع از ساختار فایل ها و دایرکتوری های آن راه اندازی کنند، اما همین بی اطلاعی گاهی اوقات به ضررشان تمام می شود، وردپرس به صورت پیش فرض محتوای ایجاد شده توسط کاربران و همچنین فایل های زیرساختی خودش(Core) را در سه دایرکتوری wp-admin، wp-content و wp-includes ذخیره و نگهداری می کند.

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

اگر به تصویر بالا دقت کنید سه دایرکتوری مهم در داخل wp-content وجود دارد که برای اهداف خاصی استفاده می شوند:

  • Plugins: افزونه هایی که نصب می کنید در این دایرکتوری ذخیره می شوند.
  • Themes: محل نگهداری قالب(تم/پوسته) های وب سایت تان
  • Uploads: فایل هایی(تصاویر، ویدیو و ….) که آپلود می کنید.

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

مرور دایرکتوری(Directory Browsing/Directory Listing)

به طور پیش فرض در اکثر وب سرورهای معروف نظیر Apache ،LiteSpeed و Nginx امکان مرور دایرکتوری فعال می باشد، این بدان معناست که بازدیدکنندگان می توانند محتویات دایرکتوری ها را مشاهده کنند. برای بررسی این امکان آدرس yoursite.com/wp-content/uploads را در مرورگر وب وارد نمائید(yoursite.com را با آدرس وب سایت تان جایگزین کنید) در صورتی که قابلیت Directory Browsing فعال باشد صفحه ای مشابه تصویر زیر نشان داده خواهد شد.

امکان directory listing

یک صفحه HTML ساده با قابلیت مرور محتوا، برای مشاهده جزئیات هم کافی است بر روی لینک ها کلیک کنید، واقعا امکان جالب و مفیدی است!

فایل ایندکس(Index)

اگر در ریشه یک دایرکتوری فایل index.php، index.html یا index.htm وجود داشته باشد اینبار وب سرور به گونه ای دیگر رفتار خواهد کرد و به جای نمایش محتویات دایرکتوری فایل index را به بازدیدکننده نشان می دهد.

برای بررسی این موضوع فایل index.php را در دایرکتوری uploads ایجاد کردیم و خطوط زیر را در آن قرار دادیم، فایل index می تواند خالی باشد.

دایرکتوری uploads

<?php
   echo "!شما نمی توانید به این دایرکتوری دسترسی داشته باشید";
?>

این روش یک مشکل اساسی دارد، اگر بازدیدکننده اینبار از آدرسی مانند yoursite.com/uploads/2017 استفاده کند باز هم می تواند به محتویات دایرکتوری uploads دسترسی پیدا کند و شما مجددا باید یک فایل index دیگر در داخل دایرکتوری ۲۰۱۷ ایجاد نمائید، پس این روش در عمل آنچنان باید و شاید پاسخگوی نیاز ما نخواهد بود.

فایل htaccess.

بهترین روش برای غیرفعال کردن قابلیت Directory Browsing فایل 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

 

حال برای جلوگیری از امکان مرور دایرکتوری کد زیر را به انتهای خطوط بالا اضافه نمائید.

Options All -Indexes

 

پس از اعمال این تغییرات در صورتی که بازدید کننده ای بخواهد به دایرکتوری های وردپرس دسترسی پیدا کند با خطای دسترسی غیر مجاز(Access Forbidden) و یا صفحه موردنظر یافت نشد(Page Not Found) مواجه خواهد شد.

دسترسی غیرمجاز خطای 403

جمع بندی

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

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

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

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