سلام دوستان، امروز میخوایم درباره یک مشکل امنیتی مهم در دنیای وب صحبت کنیم به اسم 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 است که **آسب پذیر** به حملات 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, امنیت وبسایت, اعتبارسنجی ورودی, لیست سفید, امنیت سایبری.
امتیاز شما به این مطلب
امتیاز: 5 از 5 (مجموع 1 رای)
اولین نفری باشید که در مورد این مقاله نظر می دهید!
techfeed.ir© 2024 All rights reserved