حملات IDOR - فلسک دولوپر | آموزش فلسک
جدیدترین مقالات
مدهای مختلف رمزنگاری متقارن
SOLID چیست؟ 0 تا 100 سالید در برنامه نویسی
حملات IDOR
روش های کنترل دسترسی در سازمان ها
حملات IDOR یا همان Insecure Direct Object Reference در واقع یک خلا امنیتی است که موجب دسترسی غیرمجاز به داده ها میشود.
id=123
حمله IDOR چیست؟
راههای پیشگیری برای توسعهدهندگان
حمله IDOR (Insecure Direct Object References) چیست؟
حمله IDOR (مخفف Insecure Direct Object References) یکی از رایجترین آسیبپذیریهای امنیتی در برنامههای وب است که در لیست OWASP Top 10 قرار دارد. این حمله زمانی اتفاق میافتد که یک برنامه وب به کاربر اجازه میدهد بهطور مستقیم به منابع داخلی (مانند فایلها، رکوردهای دیتابیس یا مسیرهای سیستم) دسترسی پیدا کند، بدون اینکه بررسی کند آیا کاربر مجوز لازم را دارد یا خیر.
مثال ساده از حمله IDOR
فرض کنید یک سایت دارای URL زیر برای مشاهده پروفایل کاربران است:
https://example.com/profile?id=123
اگر مهاجم مقدار id
را به 124
تغییر دهد و بتواند به پروفایل کاربر دیگری دسترسی پیدا کند، این یک حمله IDOR است.
چگونه از IDOR جلوگیری کنیم؟
1. اعتبارسنجی دسترسی (Authorization Checks)
همیشه قبل از نمایش یا تغییر دادهها، بررسی کنید که کاربر مجوز دسترسی به آن منبع را دارد.
// مثال در PHP (با فریمورک Laravel)
public function showProfile($id) {
$user = User::find($id);
if (auth()->user()->id !== $user->id) {
abort(403, 'دسترسی غیرمجاز');
}
return view('profile', ['user' => $user]);
}
2. استفاده از شناسههای غیرقابل حدس
به جای استفاده از اعداد ترتیبی (1, 2, 3…)، از UUID یا توکنهای تصادفی استفاده کنید.
// مثال در Python (با Flask)
from uuid import uuid4
user_id = uuid4() # تولید یک شناسه تصادفی
print(user_id) # مثلاً: 'a1b2c3d4-e5f6-7890-g1h2-i3j4k5l6m7n8'
3. رمزنگاری پارامترهای حساس
اگر لازم است شناسهها در URL نمایش داده شوند، میتوانید آنها را رمزنگاری کنید.
// مثال در Node.js (با Express و crypto)
const crypto = require('crypto');
function encryptId(id) {
const cipher = crypto.createCipher('aes-256-cbc', 'secret-key');
let encrypted = cipher.update(id.toString(), 'utf8', 'hex');
encrypted += cipher.final('hex');
return encrypted;
}
function decryptId(encrypted) {
const decipher = crypto.createDecipher('aes-256-cbc', 'secret-key');
let decrypted = decipher.update(encrypted, 'hex', 'utf8');
decrypted += decipher.final('utf8');
return decrypted;
}
4. استفاده از توکنهای موقت (One-Time Tokens)
برای عملیات حساس (مثل تغییر رمز عبور)، از توکنهای یکبارمصرف استفاده کنید.
// مثال در Django
from django.contrib.auth.tokens import PasswordResetTokenGenerator
token_generator = PasswordResetTokenGenerator()
token = token_generator.make_token(user)
جمعبندی
- IDOR یک حمله رایج است که به مهاجمان اجازه دسترسی غیرمجاز به دادهها را میدهد.
- برای جلوگیری از آن، همیشه اعتبارسنجی دسترسی (Authorization) را انجام دهید.
- از شناسههای غیرقابل حدس (مثل UUID) استفاده کنید.
- در صورت نیاز، پارامترهای URL را رمزنگاری کنید.
دسته بندی:
برچسب ها:
افزودن دیدگاه لغو پاسخ
مقالات و آموزش ها
مدهای مختلف رمزنگاری متقارن هرکدام دارای تعاریف متفاوت و دامنه کاربردی هوشمند هستند. در رمزنگاری متقارن، الگوریتمهای رمزنگاری بلوکی مانند AES برای پردازش دادهها به صورت بلوکهایی با اندازه ثابت طراحی شدهاند، اما این الگوریتمها بهتنهایی قادر به رمزنگاری دادههایی…
زمان مطالعه 6 دقیقه
SOLID یا سالید مجموعهای از پنج اصل طراحی در برنامهنویسی شیءگرا است که با هدف بهبود ساختار و کیفیت کد معرفی شدهاند. این اصول توسط رابرت سی. مارتین (Robert C. Martin) پیشنهاد شدند و نقش کلیدی در توسعه نرمافزارهای انعطافپذیر،…
زمان مطالعه 7 دقیقه
حملات IDOR یا همان Insecure Direct Object Reference در واقع یک خلا امنیتی است که موجب دسترسی غیرمجاز به داده ها میشود. https://example.com/profile? id=123 🔓 ➜ 🔒 حمله IDOR چیست؟ راههای پیشگیری برای توسعهدهندگان حمله IDOR (Insecure Direct Object…
زمان مطالعه 2 دقیقه
This content is restricted to subscribers
زمان مطالعه 2 دقیقه
دیکشنریهای تو در تو (Nested Dictionaries) به ساختار دادههایی گفته میشود که در آنها یک دیکشنری داخل دیکشنری دیگر قرار میگیرد. این ساختار برای ذخیرهسازی دادههای پیچیده و سلسلهمراتبی بسیار مفید است. به عنوان مثال، میتوانید اطلاعات یک کاربر شامل…
زمان مطالعه 2 دقیقه
حملات XSS: تهدیدی جدی برای امنیت وب چطور با XSS مقابله کنیم؟ حملات XSS یا (Cross-Site Scripting) یکی از رایجترین تهدیدات امنیتی در دنیای وب هستند که میتوانند به سرقت دادههای کاربران یا تغییر رفتار وبسایتها منجر شوند. مقابله با…
زمان مطالعه 3 دقیقه
بلاکچین: فناوری انقلابی برای آینده دیجیتال بلاکچین چیست؟ بلاکچین یک فناوری نوآورانه است که بهعنوان پایه و اساس بسیاری از ارزهای دیجیتال مانند بیتکوین شناخته میشود. این فناوری یک دفتر کل توزیعشده و غیرمتمرکز است که امکان ثبت اطلاعات بهصورت…
زمان مطالعه 3 دقیقه
آموزش جامع ساختارهای داده در پایتون برای مبتدیان فهرست مطالب مقدمهای بر ساختارهای داده در پایتون لیست (List) – آرایههای قابل تغییر و انعطافپذیر تاپل (Tuple) – آرایههای غیر قابل تغییر دیکشنری (Dictionary) – ساختار کلید-مقدار مجموعه (Set) – مجموعههای…
زمان مطالعه 9 دقیقه
مقدمه در دنیای امروز، توسعه نرمافزار بدون کار تیمی مؤثر تقریباً غیرممکن است. تیمهای نرمافزاری موفق، نیازمند همکاری، ارتباطات قوی و مدیریت صحیح هستند. در این پادکست، به بررسی راهکارهای عملی برای پیادهسازی کار تیمی در توسعه نرمافزار میپردازیم.…
زمان مطالعه 3 دقیقه
نقشه ذهنی چیست؟ چرا نقشه ذهنی اهمیت دارد؟ نقشه ذهنی یک ابزار بصری قدرتمند است که برای سازماندهی اطلاعات و ایدهها به کار میرود. این روش که توسط تونی بازان معرفی شد، به افراد کمک میکند تا افکار خود را…
زمان مطالعه 3 دقیقه
0 دیدگاه