امنیت وباپلیکیشنها: خط دفاعی عملی برای تیم محصول
امنیت محصول پیوستهای از احراز هویت، اعتبارسنجی، پیکربندی و فرهنگ تیم است — نه فقط firewall انتهای مسیر.
علی مرتضوی
بنیانگذار پارادایس کد
مدل تهدید برای محصول وب
امنیت وقتی عملی میشود که بدانید چه چیزی را محافظت میکنید: داده کاربر، پرداخت، محتوای اختصاصی، دسترسی ادمین. مدل تهدید نیازی به سند خشک نیست؛ لیست روشن از داراییها و مهاجمهای محتمل کافی است.
مهاجم رقیق نیست؛ کاربر اشتباهکننده، bot، insider ناراضی و اسکریپت خودکار هم در مدل هستند. امنیت فقط در برابر هکر حرفهای نیست.
OWASP Top 10 چکلیست خوبی است: broken access control، injection، misconfiguration و غیره. هر مورد را به featureهای محصول خودتان map کنید.
احراز هویت و مدیریت session
رمز عبور را hash کنید (bcrypt یا argon2). هرگز plain ذخیره نکنید. سیاست رمز معقول و rate limit روی login brute force ضروری است.
JWT اگر استفاده میکنید، عمر کوتاه، امضای قوی و ذخیره امن در httpOnly cookie برای سناریوهای حساس را در نظر بگیرید. localStorage برای token در برابر XSS آسیبپذیرتر است.
logout واقعی یعنی invalidate session سمت سرور. MFA برای ادمین و عملیات حساس توصیه میشود.
کنترل دسترسی و مرز سرور
هر endpoint باید فرض کند درخواست دشمن است. authorization در server انجام شود، نه فقط مخفی کردن دکمه در UI. IDOR شایعترین باگ در API است: کاربر A نباید با تغییر id به داده B برسد.
نقش و permission را در یک لایه متمرکز پیاده کنید. تست خودکار برای مسیرهای ممنوع بنویسید.
فایل آپلود: نوع MIME واقعی، اندازه محدود، ذخیره خارج web root، URL امضاشده برای دسترسی. آپلود بدون اعتبارسنجی دروازه RCE است.
ورودی، خروجی و XSS
همه ورودی validate و sanitize شود. SQL/NoSQL injection با query parameterized و ORM درست کم میشود. پیام خطا اطلاعات داخلی لو ندهد.
XSS stored در بلاگ و نظرات خطرناک است. escape در render، CSP header، و کتابخانههای امن برای HTML.user-generated. dangerouslySetInnerHTML فقط با sanitizer قوی.
CSRF برای فرمهای session-based با token یا SameSite cookie. برای API stateless، CORS محدود و origin check.
پیکربندی، secret و وابستگیها
HTTPS everywhere. HSTS، headerهای امنیتی (X-Frame-Options، CSP). env جدا برای dev و prod. secret در git ممنوع.
dependency را منظم بهروز کنید. npm audit راهحل کامل نیست اما شروع خوبی است. نسخه قفلشده در lockfile.
لاگ امن: PII و رمز در log نباشد. لاگ دسترسی ادمین برای audit نگه دارید.
فرهنگ امنیتی در چرخه توسعه
security review در PRهای حساس: auth، پرداخت، آپلود، export داده. threat modeling سبک قبل از feature بزرگ.
برنامه incident response داشته باشید: چه کسی قطع میکند، چگونه rotate میکنید، چگونه به کاربر اطلاع میدهید.
امنیت یکباره نیست. در پارادایس کد امنیت را در معماری API، پنل ادمین و استقرار یکجا میبینیم — چون اعتماد کاربر ایرانی به محصول دیجیتال سخت به دست میآید و آسان از دست میرود.
دانش و مقالات
نیاز به اجرای همین مفاهیم در محصولتان دارید؟
پارادایس کد از مشاوره تا پیادهسازی کامل کنار شماست.