آموزش غیر فعال کردن Directory Listing
اینبار بدون حاشیه سراغ اصل مطلب میرویم. در آموزش امروز به همراه مسترکد خواهیم آموخت که دایرکتوری لیستینگ یا دایرکتوری برازینگ چیست؟ چرا لازم است آن را غیر فعال کنیم؟ و در پایان، چگونه میتوانیم دایرکتوری لیستینگ را در سایت خود غیر فعال کنیم. با ما همراه باشید.
Directory Listing یا Directory Browsing چیست؟
تا امروز حتما پیش آمده که آدرسی از یک سایت را در مرورگر خود باز کنید و بجای یک صفحه با لیست فایل ها و فولدر های موجود در آدرس ذکر شده مواجه شوید. مثلا آدرس فولدر wp-content را در یک سایت وردپرسی وارد کرده باشید و مرورگر به شما فولدر های افزونه ها، قالب ها، آپلود ها و غیره را نشان داده باشد. برای درک بهتر این موضوع به تصویر زیر توجه کنید :
همانطور که در تصویر بالا نیز به خوبی قابل مشاهده است، پس از وارد کردن ادرس یک فولدر در سایت، با لیستی از فولدر ها و فایل های موجود در آن آدرس مواجه شده ایم که به این حالت دایرکتوری لیستینگ میگویند. یعنی وب سرور، لیستی از فایل ها را جهت مرور (Directory Browsing) به کاربر نمایش میدهد. این مسئله وقتی اتفاق می افتد که فولدر مورد نظر فاقد فایل ایندکس باشد. مثلا در این حالت اگر در این فولدر یک فایل با نام index.php یا index.html موجود بود، دیگر چنین اتفاقی نمی افتاد و بجای لیست فایل ها، محتوای فایل ایندکس به نمایش در می آمد.
چرا باید Directory Listing را غیر فعال کنیم؟
به دو دلیل فعال بودن دایرکتوری لیستینگ، برای سایت شما اصلا مناسب نیست. دلیل اول اینکه هکر ها میتوانند از این امکان برای پیدا کردن فایلهای قابل نفوذ در سایت شما استفاده کنند. مثلا یک هکر مشاهده میکند که شما پلاگین x را در سایت خود نصب کرده اید. در عین حال همان هکر از یک حفره ی امنیتی در همین پلاگین اطلاع دارد. بنابراین به سادگی از طریق کسب این اطلاعات، شروع به نفوذ به سایت شما میکند. دلیل دوم جلوگیری سوء استفاده توسط افراد سودجوست. بارها مشاهده شده که قالب ها و افزونه های تجاری، از روی سایت های کاربران، بخاطر همین فعال بودن امکان Directory Listing یا Directory Browsing به سرقت رفته اند. شخص سودجو به سادگی با جستجوی url مورد نظرش از طریق موتور های جستجو، به سایت شما دست پیدا کرده و شروع به ذخیره ی فایلهای مورد نیازش میکند. بنابراین همانطور که میبینید، فعال بودن این ویژگی معمولا به ضرر شماست.
چگونه Directory Listing را غیر فعال کنیم؟
غیر فعال کردن دایرکتوری لیستینگ / دایرکتوری برازینگ بسیار آسان است. برای انجام این کار دو روش پیش رو خواهید داشت. اولین روش این است که به سادگی در فولدری که مایل نیستید لیست فایل ها و فولدر های آن برای شخص بازدیدکننده به نمایش در بیاید، یک فایل ایندکس مانند index.php یا index.html قرار دهید. اصلا نیازی به اینکه این فایل را پر کنید نیست. تنها حضور این فایل در فولدر مورد نظر منجر به عدم نمایش لیست دایرکتوری ها خواهد شد.
بدیهی است که استفاده از شیوه ی فوق در زمانی که تعداد زیادی فولدر داشته باشید و بخواهید دایرکتوری لیستینگ را در همه ی آنها غیر فعال کنید، ایده آل نیست. چرا که باید ساعت ها وقت صرف قرار دادن فایل ایندکس در تمامی این فولدر ها کنید. اینجاست که باید دست به دامان فایل .htaccess شد و از شیوه ی دوم کمک گرفت. در شیوه ی دوم کافی است کد زیر را به فایل .htaccess سایت خود اضافه کنید :
1 | Options -Indexes |
توجه داشته باشید که فایل .htaccess یک فایل مخفی یا hidden است. بنابراین جهت مشاهده ی آن در فایل منیجر هاست یا کلاینت FTP لازم است نمایش فایل های hidden را فعال کرده باشید.
و در آخر هم طبق معمول، پیش از اعمال هر نوع تغییر در فایل های مورد نظرتان، از آنها بکاپ تهیه کنید تا در صورتی که در ویرایش فایل اشتباهی رخ داد، با استفاده از بکاپ، امکان بازگردانی وجود داشته باشد.
امیدواریم از این آموزش ساده و کوتاه لذت برده باشید.
با سلام و خسته نباشید
ممنون از آموزشتون کارم راه افتاد
همیشه موفق باشید
سلام
خواهش میکنم. انشالله موفق باشید
با سلام و خسته نباشید و ممنون بابت مطلب خوبتون
من یه سوال خیلی ابتدایی دارم که واقعا ممنون میشم اگه راهنماییم کنید چون واقعا کلافه شدم. من یه سایت با asp.net ساختم اما وقتی رو هاست آپلودش میکنم کار نمیکنه و فقط لیست پوشه هامو نشون میده. واقعا ممنون میشم اگه راهنماییم کنید.
سلام.
ممنون از زحمات شما.
گوگل خیلی از پوشه های wp content سایت من را ایندکس کرده است،چرا؟
چگونه میتونم این صفحات ایندکس شده را از تو گوگل خارج کنم؟از وبمستر گوگل امکانش هست؟
البته من کد داده شده در بالا را اضافه کردم اچ تی اکسس
سلام
ایندکس شدن محتوای موجود در wp-content ارتباطی به دایرکتوری لیستینگ نداره و گوگل عموما با لینک هایی که خودتون در سایت به تصاویر و … که در این فولدر موجود هستند میدید، اقدام به ایندکس کردن محتوای موجود در این بخش میکنه. دایرکتوری لیستینگ به حالتی میگیم که وقتی فولدری رو مورد دسترسی قرار میدیم، تمامی فایل های موجود در اون برای ما به صورت لیست به نمایش در میان که همونطور که عرض کردم جدا از مبحث ایندکس شدن هست.
با توجه به اینکه فولدر wp-content حاوی تصاویر سایت شما هم هست، بنده جلوگیری از ایندکس شدنش رو توصیه نمیکنم ولی به هر شکل در صورتی که تصمیمتون این هست که جلوی ایندکس شدن این بخش رو توسط روبات های موتورهای جستجو بگیرید، باید از فایل robots.txt استفاده کنید و این بخش رو در این فایل ممنوع کنید. راهنمای استفاده از فایل robots.txt در زیر قابل مطالعه هست :
https://mrcode.ir/?p=3693
ممنون از پاسخ دهی سریع و کامل شما.
سلام
من همین کار رو کردم برای حذف دایرکتوری هام اما درست نشد . راه دیگه ای نداره؟
سلام
این آموزش برای غیر فعال کردن دایرکتوری لیستینگ هست و ارتباطی به حذف پوشه ها نداره.
بله منظورم این بود که همچنان با سرچ سایت دایرکتوری لیست هام وجود دارن
کار دیگه ای که میتونید بکنید اینه که در هر دایرکتوری یک فایل index.html یا index.php قرار بدید.
چقد خوب بود، خیلی بدردم خورد مرسی 🙂
سلام خیلی خوب بود ممنون
فقط چطور میشه اون اخطار 403 رو کهمیاره عوض کنیم؟؟
سلام
توی فایل htaccess سایتتون از این کد استفاده کنید :
ErrorDocument 403 /dir/file.html
بجای /dir/file.html فایل خطای 403 دلخواهتون رو قرار بدید.
سلام من این کد رو امتحان کردم ولی بازم نشون میده دایرکتوری رو چکار کنم؟
با سلام
تمامی عزیزانی که آموزش بستن و محدود کردن دایرکتوری بروزینگ رو میدهند، استفاده از این کد را آموزش میدهند.
بنده این کد را در درون فایل htaccess قرار دادم ولی حالا بار اول که مسیر دایرکتوری های قالب را لود میکنم فایل های آن دایرکتوری همگی لیست می شوند و با ری فرش کردن صفحه این بار دسترسی بسته میشود! یعنی عملا این کار بی فایده است.
بنظرتون دلیل این که همون بار اول دسترسی رو نمی بنده چیست؟
عالی بود. سپاس
دمت گرم
سلام، چطور میتونم یک مسیر خاص و Directory Listing فعال کنم و دیگر مسیر ها غیر فعال؟