frontend-interview-questions

1. چگونه جریان احراز هویت را در یک برنامه React با استفاده از OAuth 2.0 و ارائه‌دهنده شخص ثالث (مثل Google، Auth0) طراحی می‌کنید؟

از یک ارائه‌دهنده OAuth (مثل Auth0 یا Google) با جریان کد احراز هویت + PKCE برای برنامه‌های تک‌صفحه‌ای (SPA) استفاده کنید.

مراحل:

  1. کاربر را به URL ورود ارائه‌دهنده هدایت کنید.
  2. کد code را در URI هدایت دریافت کنید.
  3. کد را از طریق بک‌اند امن یا SDK با توکن‌های دسترسی و تازه‌سازی مبادله کنید.
  4. توکن‌ها را به‌صورت امن در حافظه یا کوکی‌های httpOnly ذخیره کنید.


2. رویکرد شما برای پیاده‌سازی احراز هویت مبتنی بر JWT در یک برنامه React، شامل ذخیره‌سازی توکن و مکانیزم‌های تازه‌سازی چیست؟

جریان:

  1. در زمان ورود، توکن‌های دسترسی و تازه‌سازی دریافت کنید.
  2. توکن دسترسی را در حافظه ذخیره کنید.
  3. در صورت دریافت 401، نقطه پایانی تازه‌سازی را فراخوانی کنید (اگر توکن تازه‌سازی موجود باشد).
  4. تازه‌سازی خودکار از طریق تایمر پس‌زمینه یا رهگیر.


3. چگونه احراز هویت چندمرحله‌ای (MFA) را در یک فرانت‌اند React مدیریت می‌کنید و چه ملاحظات تجربه کاربری را در اولویت قرار می‌دهید؟

جریان:

  1. پس از احراز هویت موفق نام کاربری/رمز عبور، پرچم MFA را بررسی کنید.
  2. ورودی MFA را نمایش دهید (TOTP، SMS).
  3. در صورت موفقیت، توکن دسترسی کامل صادر کنید.

اولویت‌های تجربه کاربری:


4. استراتژی شما برای مدیریت جلسات کاربر در یک برنامه تک‌صفحه‌ای (SPA) با React چیست؟


5. چگونه یک سیستم کنترل دسترسی مبتنی بر نقش (RBAC) را در یک برنامه React با استفاده از داده‌های احراز هویت پیاده‌سازی می‌کنید؟

از نقش‌ها/مجوزها در JWT یا متادیتای کاربر استفاده کنید.

const hasPermission = (user, permission) =>
  user?.permissions?.includes(permission);

رندر شرطی کامپوننت‌ها یا مسیرها:

{
  hasPermission(user, "admin:view") && <AdminPanel />;
}

می‌توان آن را در سطح مسیر با استفاده از HOC یا نگهبان‌های مسیر سفارشی اعمال کرد.


6. چگونه مکانیزم خروج را در یک برنامه React طراحی می‌کنید که اطمینان دهد تمام وضعیت‌ها و توکن‌های سمت کلاینت به‌صورت امن پاک می‌شوند؟

اگر از کوکی استفاده می‌شود، یک نقطه پایانی بک‌اند را برای پاک کردن کوکی سرور فراخوانی کنید.


7. رویکرد شما برای مدیریت احراز هویت در یک برنامه React رندرشده سمت سرور (SSR) چیست؟


8. چگونه یک سیستم احراز هویت را با Redux یا Zustand برای مدیریت وضعیت جهانی ادغام می‌کنید؟


9. فرآیند شما برای مدیریت خطاهای احراز هویت (مثل توکن‌های منقضی‌شده، اعتبار نامعتبر) در یک برنامه React چیست؟


10. چگونه یک سیستم احراز هویت فرانت‌اند را برای پشتیبانی از سناریوهای چنددامنه‌ای یا چندمبدا (مثل میکروفرانت‌اندها) طراحی می‌کنید؟


11. چالش‌برانگیزترین آسیب‌پذیری امنیتی که در یک برنامه فرانت‌اند با آن مواجه شدید چیست و چگونه آن را برطرف کردید؟

با یک آسیب‌پذیری XSS مواجه شدم که ورودی کاربر بدون پاک‌سازی در innerHTML تزریق می‌شد.

رفع: از DOMPurify برای پاک‌سازی سمت کلاینت استفاده کردم و بازسازی کردم تا هرگز از dangerouslySetInnerHTML استفاده نشود.


12. چگونه یک برنامه React را از حملات جعل درخواست بین‌سایتی (CSRF) محافظت می‌کنید؟


13. رویکرد شما برای ایمن‌سازی فراخوانی‌های API از یک فرانت‌اند React برای جلوگیری از حملات مرد میانی (MITM) چیست؟


14. چگونه یک برنامه React را طراحی می‌کنید تا از افشای داده‌های حساس در مرورگر (مثل DOM یا کنسول) جلوگیری کند؟


15. استراتژی شما برای ایمن‌سازی اسکریپت‌ها یا کتابخانه‌های شخص ثالث در یک برنامه React چیست؟


16. چگونه اعتبارسنجی و پاک‌سازی ورودی را در یک فرانت‌اند React برای جلوگیری از حملات تزریقی (مثل XSS) پیاده‌سازی می‌کنید؟


17. رویکرد شما برای طراحی یک سیاست امنیت محتوا (CSP) برای یک برنامه React چیست؟

Content-Security-Policy:
default-src 'self';
script-src 'self' https://trusted.cdn.com;
object-src 'none';

از nonces برای اسکریپت‌های درون‌خطی و حالت گزارش‌دهی در طول تست استفاده کنید.


18. چگونه امنیت را در یک برنامه React که در یک محیط بدون اعتماد مستقر شده مدیریت می‌کنید؟


19. فرآیند شما برای انجام ممیزی امنیتی یک فرانت‌اند React قبل از انتشار عمده چیست؟


20. چگونه یک سیستم فرانت‌اند را برای رعایت استانداردهای امنیتی مثل GDPR یا HIPAA طراحی می‌کنید؟