آخرین بروزرسانی 9 روز قبل

Traversal Directory چیست؟

Directory Traversal: یک خطر جدی برای وبسایت شما

سلام دوستان، امروز می‌خوایم درباره یک مشکل امنیتی مهم در دنیای وب صحبت کنیم به اسم Directory Traversal. شاید اسمش کمی پیچیده به نظر برسه، ولی نگران نباشید! سعی می‌کنم خیلی ساده و روان براتون توضیح بدم.

فرض کنید یک فایل دارید توی کامپیوترتون. برای اینکه به اون فایل دسترسی پیدا کنید، باید آدرس دقیقش رو بدونید. مثلا آدرس یک عکس می‌تونه این شکلی باشه: C:\Users\YourName\Documents\Pictures\MyPhoto.jpg.

حالا توی دنیای وب هم دقیقا همینطوره. وقتی شما یک صفحه وب رو باز می‌کنید، مرورگرتون (مثل کروم یا فایرفاکس) به سرور وبسایت درخواست میده که یک فایل رو براش بفرسته. این فایل می‌تونه یک صفحه HTML باشه، یک عکس باشه، یا هر چیز دیگه.

Directory Traversal در واقع یک نوع حمله است که هکر سعی می‌کنه باهاش به فایل‌هایی توی سرور دسترسی پیدا کنه که نباید بهشون دسترسی داشته باشه. به عبارت دیگه، هکر می‌خواد آدرس رو "دور بزنه" و به فایل‌های مهمی مثل تنظیمات وبسایت یا اطلاعات کاربران دسترسی پیدا کنه.

چطور این اتفاق میفته؟

این مشکل معمولا وقتی پیش میاد که وبسایت آدرس فایل‌ها رو به درستی بررسی نکنه. فرض کنید یک وبسایت به شما اجازه میده که عکسی رو آپلود کنید و بعد اون عکس رو ببینید. آدرس عکس شما ممکنه این شکلی باشه:

www.example.com/show_image.php?image=my_image.jpg

اینجا وبسایت داره از شما اسم عکس رو میگیره (my_image.jpg) و بعد اون عکس رو نشون میده. حالا اگه یک هکر به جای اسم عکس، چیز دیگه‌ای بفرسته چی میشه؟ مثلا این:

www.example.com/show_image.php?image=../../../../etc/passwd

این آدرس داره سعی میکنه به فایل /etc/passwd دسترسی پیدا کنه. این فایل خیلی مهمه، چون اطلاعات کاربران سیستم عامل لینوکس توش هست. علامت ../ به معنی "برو یک پوشه عقب‌تر" هست. هکر با این کار داره سعی میکنه از پوشه ای که عکس‌ها توش هستن خارج بشه و به پوشه‌های بالاتری دسترسی پیدا کنه تا به فایل مورد نظرش برسه.

مثال‌های بیشتر

برای اینکه بهتر متوجه بشید، چند تا مثال دیگه هم میزنم:

آدرس اصلی آدرس آلوده توضیحات
www.example.com/download.php?file=report.pdf www.example.com/download.php?file=../../../config.php تلاش برای دانلود فایل تنظیمات وبسایت.
www.example.com/profile.php?user=123 www.example.com/profile.php?user=../../../../etc/shadow تلاش برای دسترسی به فایل shadow که رمزهای عبور رو نگهداری می‌کنه (در سیستم‌های لینوکسی).
www.example.com/view_log.php?log=application.log www.example.com/view_log.php?log=C:\Windows\System32\drivers\etc\hosts تلاش برای دیدن فایل hosts (در سیستم‌های ویندوزی).

چطور از وبسایت خودمون محافظت کنیم؟

اگر شما یک توسعه‌دهنده وب هستید، باید حتما این نکات رو رعایت کنید تا وبسایتتون در برابر این حملات امن باشه:

  • اعتبارسنجی ورودی: هر اطلاعاتی که کاربر وارد می‌کنه (مثل اسم فایل، آدرس و غیره) رو به دقت بررسی کنید. مطمئن بشید که اطلاعات وارد شده معتبر هستند و هیچ علامت خطرناکی (مثل ../) توشون نیست.
  • استفاده از لیست سفید: به جای اینکه بگید چه چیزهایی نباید وارد بشه، بگید دقیقا چه چیزهایی مجاز هستند. مثلا اگه فقط فایل‌های .jpg مجاز هستند، فقط اجازه بدید فایل‌هایی با این پسوند آپلود بشن.
  • محدود کردن دسترسی‌ها: به هر فایل و پوشه فقط به اندازه نیاز دسترسی بدید. لازم نیست یک اسکریپت به همه فایل‌های سرور دسترسی داشته باشه.
  • به‌روز نگه داشتن نرم‌افزارها: همیشه از آخرین نسخه نرم‌افزارهای وبسایتتون (مثل PHP، MySQL و غیره) استفاده کنید. این آپدیت‌ها معمولا شامل اصلاحات امنیتی مهمی هستند.
  • استفاده از فریم‌ورک‌های امن: فریم‌ورک‌های PHP مثل Laravel و Symfony دارای مکانیسم‌های امنیتی هستند که از وبسایت شما در برابر حملات Directory Traversal و سایر حملات محافظت می‌کنند. استفاده از این فریم‌ورک‌ها می‌تواند کار شما را بسیار آسان‌تر کند.

یک نکته مهم: هرگز به ورودی‌های کاربران اعتماد نکنید! همه ورودی‌ها باید قبل از استفاده اعتبارسنجی شوند. این موضوع خیلی مهههههمه.

مثال کد (PHP)

این یک مثال ساده از یک کد PHP است که **آسب پذیر** به حملات Directory Traversal است:


  <?php
  $filename = $_GET['file'];
  include($filename); // خطرناک!
  ?>
  

این کد مشکل داره چون به کاربر اجازه میده هر فایلی رو که میخواد از طریق پارامتر file درخواست کنه. هکر میتونه با استفاده از ../ به فایل‌های غیرمجاز دسترسی پیدا کنه.

این یک مثال از کد PHP است که **ایمن‌تر** است:


  <?php
  $filename = $_GET['file'];

  // لیست سفید فایل‌های مجاز
  $allowed_files = array(
      'home.php',
      'about.php',
      'contact.php'
  );

  if (in_array($filename, $allowed_files)) {
      include($filename);
  } else {
      echo "فایل مورد نظر یافت نشد.";
  }
  ?>
  

این کد فقط اجازه میده فایل‌هایی که در لیست سفید $allowed_files هستند включены بشن. این باعث میشه که هکر نتونه به فایل‌های غیرمجاز دسترسی پیدا کنه.

خلاصه

Directory Traversal یک آسیب‌پذیری امنیتی جدیه که میتونه به هکرها اجازه بده به فایل‌های حساس وبسایت شما دسترسی پیدا کنن. برای جلوگیری از این مشکل، باید ورودی‌های کاربران رو به دقت بررسی کنید، دسترسی‌ها رو محدود کنید، نرم‌افزارهاتون رو به روز نگه دارید و از فریم‌ورک‌های امن استفاده کنید. با رعایت این نکات، میتونید وبسایتتون رو در برابر این حملات محافظت کنید.

کلیدواژه‌ها

Directory Traversal, آسیب‌پذیری امنیتی, امنیت وب, هک, PHP, امنیت وبسایت, اعتبارسنجی ورودی, لیست سفید, امنیت سایبری.

Directory Traversal دقیقا یعنی چی؟
Directory Traversal یک نوع حمله است که هکر سعی می‌کنه باهاش به فایل‌هایی توی سرور دسترسی پیدا کنه که نباید بهشون دسترسی داشته باشه.
چطور میتونم وبسایتم رو در برابر Directory Traversal محافظت کنم؟
با اعتبارسنجی ورودی‌ها، استفاده از لیست سفید، محدود کردن دسترسی‌ها و به روز نگه داشتن نرم‌افزارها.
آیا استفاده از فریم‌ورک PHP میتونه کمکم کنه؟
بله، فریم‌ورک‌های PHP مثل Laravel و Symfony دارای مکانیسم‌های امنیتی هستند که از وبسایت شما در برابر این حملات محافظت می‌کنند.
من یک کاربر معمولی هستم. آیا باید نگران Directory Traversal باشم؟
شما به عنوان یک کاربر معمولی، نمیتونید به طور مستقیم جلوی این حملات رو بگیرید. ولی میتونید مطمئن بشید که از وبسایت‌هایی استفاده میکنید که معتبر هستند و امنیت رو جدی میگیرند.

به اشتراک گذاشتن این مطلب در شبکه های اجتماعی

امتیاز شما به این مطلب

امتیاز: 5 از 5 (مجموع 1 رای)

اولین نفری باشید که در مورد این مقاله نظر می دهید!

2933- V7
Terms & Conditions | Privacy Policy

techfeed.ir© 2024 All rights reserved