پرش به محتوای اصلی

وبلاگ رخنه‌کاو

امنیت وب، به زبان قابل اجرا

آنچه در کار روزمره روی سایت‌های واقعی یاد می‌گیریم — بدون بزرگ‌نمایی، بدون ترساندن، و با قدم‌هایی که می‌توانید همین امروز بردارید.

تازه‌ترین مقاله‌ها

آسیب‌پذیری‌های سایت

افشای پوشه .git چه خطری دارد؟ روش‌های جلوگیری از نشت سورس کد سایت

افشای پوشه .git زمانی رخ می‌دهد که اطلاعات داخلی Repository یک سایت از طریق وب‌سرور قابل دسترسی شود و در شرایطی Source Code، Git History و اطلاعات حساس پروژه را در معرض نشت قرار دهد. خطر اصلی فقط نسخه فعلی کد نیست؛ API Key، Token، Password یا فایل‌هایی که در گذشته حذف شده‌اند نیز ممکن است همچنان در تاریخچه Git باقی مانده باشند. جلوگیری از قرار گرفتن .

۳۵ دقیقه مطالعه
امنیت سرور و هاست

فایل .env چیست و چگونه از افشای اطلاعات حساس آن جلوگیری کنیم؟

فایل .env برای نگهداری متغیرهای محیطی و تنظیمات برنامه استفاده می‌شود و ممکن است شامل اطلاعات حساسی مانند رمز پایگاه داده، API Key، Token و کلیدهای رمزنگاری باشد. افشای فایل .env از طریق Git، تنظیم نادرست وب‌سرور، Backup، Docker Image یا Log می‌تواند امنیت کل وب‌اپلیکیشن را تحت تأثیر قرار دهد. خارج‌کردن فایل از Public Web Root، استفاده از .gitignore، محدودسازی Permission، Secret Rotation و استفاده از Secret Manager در محیط‌های حساس از مهم‌ترین روش‌های محافظت از فایل .env هستند.

۳۴ دقیقه مطالعه
امنیت سرور و هاست

Secrets Management چیست؟ روش امن نگهداری API Key، Token و رمزهای سرور

Secrets Management مجموعه‌ای از فرایندها و ابزارهای امنیتی برای نگهداری، توزیع، کنترل دسترسی، Rotation و حذف امن اطلاعات حساسی مانند API Key، Token، رمز سرور، SSH Key و کلیدهای رمزنگاری است. Hardcode کردن Secretها در Source Code، Git، فایل‌های تنظیمات و Logها می‌تواند مسیر مستقیمی برای افشای Credential و دسترسی غیرمجاز ایجاد کند. استفاده از Secret Vault، اصل Least Privilege، جداسازی محیط‌ها، Credentialهای کوتاه‌عمر، Secret Scanning و Audit Logging از مهم‌ترین روش‌های کاهش این ریسک هستند.

۴۲ دقیقه مطالعه
آسیب‌پذیری‌های سایت

Mass Assignment چیست؟ بررسی آسیب‌پذیری تخصیص انبوه در API و وب‌اپلیکیشن

آسیب‌پذیری Mass Assignment یا تخصیص انبوه زمانی رخ می‌دهد که API یا وب‌اپلیکیشن بدون محدودسازی مناسب، داده‌های کاربر را مستقیماً به Propertyهای Object داخلی متصل کند. این ضعف می‌تواند باعث تغییر غیرمجاز اطلاعات حساسی مانند نقش کاربر، مالکیت، وضعیت تأیید، اطلاعات مالی یا Tenant شود. استفاده از DTO، Allowlist، Mapping صریح، Property-Level Authorization و Schema Validation از مهم‌ترین روش‌های پیشگیری از آسیب‌پذیری Mass Assignment هستند.

۳۸ دقیقه مطالعه
امنیت سرور و هاست

Rate Limiting چیست؟ چرا محدودسازی درخواست‌ها برای امنیت سایت ضروری است؟

Rate Limiting مکانیزمی برای محدود کردن تعداد یا سرعت درخواست‌هایی است که یک Client در بازه زمانی مشخص می‌تواند به سایت یا API ارسال کند. نبود محدودسازی مناسب می‌تواند زمینه Brute Force، Credential Stuffing، Spam، سوءاستفاده از API، افزایش هزینه و مصرف بیش از حد منابع سرور را فراهم کند. استفاده از محدودیت‌های چندبعدی براساس IP، حساب کاربری، API Key و Endpoint، همراه با الگوریتم‌هایی مانند Token Bucket و Sliding Window، از مهم‌ترین اصول پیاده‌سازی Rate Limiting امن است.

۴۰ دقیقه مطالعه
آسیب‌پذیری‌های سایت

امنیت بازیابی رمز عبور؛ چگونه Reset Password سایت را امن طراحی کنیم؟

امنیت بازیابی رمز عبور به طراحی فرایندی اشاره دارد که فقط مالک واقعی حساب بتواند از طریق آن Password جدید تعیین کند. Token قابل حدس، User Enumeration، لینک بازیابی ناامن و باقی ماندن Sessionهای قبلی می‌توانند Reset Password را به مسیر Account Takeover تبدیل کنند. استفاده از Token تصادفی، یک‌بارمصرف و محدود به زمان، Rate Limiting، HTTPS، مدیریت Session و Notification امنیتی از مهم‌ترین اصول امنیت بازیابی رمز عبور هستند.

۳۹ دقیقه مطالعه
هک و بدافزار

Credential Stuffing چیست؟ چگونه از ورود با رمزهای افشاشده جلوگیری کنیم؟

Credential Stuffing حمله‌ای است که در آن مهاجم از نام کاربری و رمز عبور افشاشده یک سرویس برای ورود به حساب همان کاربر در سرویس‌های دیگر استفاده می‌کند. استفاده مجدد از Password مهم‌ترین عامل موفقیت این حمله و Account Takeover یکی از اصلی‌ترین پیامدهای آن است. استفاده از MFA یا Passkey، مسدود کردن Passwordهای افشاشده، Rate Limiting، Bot Detection و پایش Loginهای غیرعادی از مهم‌ترین روش‌های جلوگیری از Credential Stuffing هستند.

۳۸ دقیقه مطالعه
آسیب‌پذیری‌های سایت

Session Fixation چیست؟ تفاوت آن با Session Hijacking و روش‌های جلوگیری

Session Fixation یا تثبیت نشست زمانی رخ می‌دهد که کاربر با Session ID از پیش شناخته‌شده وارد حساب شود و وب‌سایت پس از Authentication شناسه جدیدی ایجاد نکند. تفاوت اصلی آن با Session Hijacking این است که در Hijacking معمولاً Session معتبر کاربر پس از Login سرقت می‌شود، اما در Fixation شناسه پیش از ورود مشخص است.

۴۵ دقیقه مطالعه
آسیب‌پذیری‌های سایت

DOM Clobbering چیست؟ بررسی یکی از آسیب‌پذیری‌های کمتر شناخته‌شده JavaScript

DOM Clobbering یک آسیب‌پذیری Client-Side است که از رفتار Named Properties مرورگر و عناصر دارای id یا name برای تحت تأثیر قرار دادن متغیرها و Propertyهای JavaScript استفاده می‌کند. این ضعف در صورت ترکیب با HTML کنترل‌شده و کد ناامن می‌تواند به تغییر رفتار برنامه، Open Redirect و حتی زنجیره‌های منتهی به XSS منجر شود. استفاده از HTML Sanitization، ES Modules، Type Checking، CSP و حذف وابستگی به Global Variableهای window و document از مهم‌ترین راهکارهای جلوگیری از DOM Clobbering هستند.

۳۵ دقیقه مطالعه