حتماً! در ادامه یک مقاله کامل و جامع درباره جلوگیری از نمایش فایلها و پوشههای سایت برای افزایش امنیت آماده کردم که میتونی توی سایتت منتشر کنی:
جلوگیری از نمایش محتویات پوشهها و افزایش امنیت وبسایت
یکی از روشهای مهم برای افزایش امنیت وبسایت جلوگیری از نمایش محتویات پوشهها به بازدیدکنندگان است. وقتی دسترسی به فایلها و فولدرهای سایت بهصورت مستقیم آزاد باشد، مهاجمان میتوانند ساختار سایت را مشاهده کنند و از اطلاعات حساس سوءاستفاده نمایند. در این مقاله به روشهای مختلف جلوگیری از این مشکل میپردازیم.
مشکل نمایش فایلها و پوشهها چیست؟
اگر در مرورگر آدرس پوشهای مثل:
https://example.com/uploads/
را وارد کنیم و در آن پوشه فایلی با نام index.php
یا index.html
وجود نداشته باشد، ممکن است مرورگر فایلها و فولدرهای موجود در آن مسیر را به صورت لیست نمایش دهد. این موضوع میتواند باعث افشای اطلاعات حساس مثل فایلهای پشتیبان، اسکریپتها یا عکسهای خصوصی شود.
روش اول: ایجاد فایل index.php یا index.html در هر پوشه
یکی از سادهترین و سریعترین روشها ایجاد یک فایل index.php
یا index.html
خالی یا با پیامی ساده در هر پوشه است تا وقتی کاربر به آن پوشه مراجعه کرد، این فایل لود شود و لیست فایلها نشان داده نشود.
نمونه کد index.php که نمایش محتویات را مسدود میکند:
<?php exit('دسترسی مستقیم به این پوشه ممنوع است.'); ?>
یا فقط یک فایل خالی (بدون محتوا) کافی است.
این فایل را در تمام پوشههای سایت که نمیخواهید محتویات آنها نمایش داده شود قرار دهید.
روش دوم: غیرفعال کردن Directory Listing با فایل .htaccess
اگر سرور شما آپاچی است، میتوانید با اضافه کردن یک خط کد به فایل .htaccess
در پوشه اصلی سایت، از نمایش لیست فایلها جلوگیری کنید.
کد مورد نیاز در فایل .htaccess
:
Options -Indexes
این خط باعث میشود که وقتی کاربری به یک پوشه بدون فایل index مراجعه کند، به جای نمایش لیست فایلها، با خطای 403 (دسترسی ممنوع) مواجه شود.
روش سوم: محدود کردن دسترسی به پوشههای حساس
برای پوشههایی که حاوی فایلهای مهم یا شامل کدهای سایت هستند (مثلاً پوشه includes
یا config
)، بهتر است با .htaccess
دسترسی به آنها را کاملاً مسدود کنید:
نمونه کد برای جلوگیری از دسترسی به پوشههای حساس:
# جلوگیری از دسترسی به پوشه includes
<Directory "/home/username/public_html/includes">
Order deny,allow
Deny from all
</Directory>
اگر دسترسی به .htaccess
در دایرکتوری ریشه دارید، میتوانید به صورت زیر عمل کنید:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^includes/ - [F,L,NC]
RewriteRule ^config.php - [F,L,NC]
</IfModule>
روش چهارم: مسدود کردن دسترسی به فایلهای حساس از طریق کد PHP
برای مثال در پوشه installer
که مربوط به نصب نرمافزار است، بهتر است پس از نصب، دسترسی مستقیم به صفحه نصب را مسدود کنید.
نمونه کد در index.php
پوشه installer:
<?php exit('نصب قبلاً انجام شده است.'); ?>
یا در صورت نیاز به هدایت به صفحه اصلی:
<?php
header('Location: ../index.php');
exit;
?>
نکات تکمیلی برای امنیت وبسایت
-
همیشه در پوشههای دارای فایلهای حساس مانند
config.php
یاdatabase.sql
دسترسی مستقیم کاربران را محدود کنید. -
اگر امکان دارد، این فایلها را خارج از پوشه
public_html
قرار دهید تا به طور مستقیم از طریق وب قابل دسترس نباشند. -
برای دسترسیهای مدیریتی از احراز هویت (login و رمز عبور) استفاده کنید.
-
فایلهای بکاپ را در مسیرهای قابل دسترس عموم نگذارید.
-
از بهروزرسانی مرتب CMS، پلاگینها و اسکریپتها اطمینان حاصل کنید.
-
در صورت امکان از HTTPS استفاده کنید تا دادههای منتقل شده رمزگذاری شوند.
جمعبندی
با انجام این مراحل ساده میتوانید جلوی نمایش ناخواسته فایلها و پوشههای سایت خود را بگیرید و امنیت سایت را تا حد زیادی افزایش دهید:
-
در هر پوشهای که نیازی به نمایش فایلها نیست، یک فایل
index.php
با محتوای<?php exit; ?>
قرار دهید. -
در فایل
.htaccess
ریشه سایت، گزینهOptions -Indexes
را فعال کنید. -
دسترسی به پوشهها و فایلهای حساس را با
.htaccess
محدود کنید. -
پوشههای نصب را پس از اتمام نصب غیرفعال یا محافظت کنید.