تست ایمیل‌های بازیابی OAuth بدون استفاده از صندوق‌های ورودی واقعی

تست کردن ایمیل‌های بازیابی OAuth به روش ساده، ریسک‌های امنیتی ایجاد می‌کند. بسیاری از تیم‌ها لینک‌های بازنشانی رمز عبور را به یک صندوق ورودی مشترک ارسال می‌کنند. آن‌ها فقط بررسی می‌کنند که آیا ایمیل می‌رسد یا خیر و سپس از آن عبور می‌کنند. این روش ضعیف است؛ زیرا مواردی مانند استفاده مجدد از توکن، ارسال به کاربر اشتباه و داده‌های حساس در لاگ‌ها را پنهان می‌کند.

برای هر اجرای تست، از یک آدرس ایمیل یک‌بار مصرف استفاده کنید. رویداد را ایزوله کنید، آن را بررسی کنید و سپس داده‌ها را حذف کنید. این کار از ترکیب شدن داده‌های تست جلوگیری می‌کند که می‌تواند اثبات نتایج شما را دشوار سازد.

یک مدل تهدید خوب باید این سوالات را بپرسد:

  • آیا پیام به صندوق ورودی مورد نظر برای این اجرای خاص رسید؟
  • آیا لینک یا کد در زمان مقرر منقضی می‌شود؟
  • آیا موضوع ایمیل (subject line) اطلاعات حساس کاربر را فاش می‌کند؟
  • آیا یک توکن قدیمی می‌تواند پس از یک درخواست جدید همچنان کار کند؟
  • آیا لاگ‌ها اطلاعات حساس بازیابی را بیش از حد نیاز نگه می‌دارند؟

بهترین الگو، اختصاص یک صندوق ورودی به هر اجرای تست است. این کار باعث می‌شود هر لینک و برچسب زمانی (timestamp) به یک اجرای واحد متصل بماند.

این جریان (flow) را دنبال کنید:

  • یک fixture کاربر جدید یا یک هویت sandbox ایجاد کنید.
  • ایمیل بازیابی را به یک صندوق ورودی محدود به همان اجرا (run-scoped) هدایت کنید.
  • عملیات بازیابی OAuth یا رمز عبور را یک بار اجرا کنید.
  • تأیید کنید (Assert) که دقیقاً یک ایمیل مطابقت‌یافته دریافت می‌شود.
  • لینک یا کد را باز کنید تا انقضا و رفتار یک‌بار مصرف بودن آن را تأیید کنید.
  • بلافاصله صندوق ورودی و داده‌های fixture را از بین ببرید.

اگر فرآیند شما مستلزم بررسی ایمیل‌های قدیمی مربوط به دیروز است، یعنی فرآیند شما ایراد دارد. اثبات بازیابی هرگز نباید به داده‌های قدیمی (stale) وابسته باشد.

قبل از انتشار (shipping)، این موارد را بررسی کنید:

  • نام مستعار گیرنده با هویت تست مطابقت دارد.
  • برای این رویداد، تنها یک پیام بازیابی معتبر وجود دارد.
  • موضوع و پیش‌نمایش ایمیل، داده‌های حساس را فاش نمی‌کنند.
  • URL بازیابی به محیط (environment) صحیح اشاره می‌کند.
  • توکن پس از استفاده یا انقضا، نامعتبر می‌شود.
  • رفتار تلاش مجدد (retry) باعث فعال ماندن چندین توکن معتبر نمی‌شود.

از این شکست‌های رایج دوری کنید:

  • استفاده مجدد از یک صندوق ورودی برای چندین کاربر تست.
  • ذخیره کردن URLهای بازیابی در لاگ‌هایی با ماندگاری طولانی.
  • گنجاندن آدرس‌های کامل ایمیل در موضوع ایمیل‌های بازیابی.
  • فراموش کردن ابطال لینک‌های قدیمی‌تر پس از درخواست دوم.

داده‌های محیط Staging اهمیت دارند. آن‌ها اغلب شامل نام‌ها و پیکربندی‌های واقعی هستند. از پیش‌فرض‌های ایمن استفاده کنید: نگهداری کوتاه مدت داده‌ها، اسرار (secrets) یک‌بار مصرف و پاکسازی صریح.

منبع: https://dev.to/sophiax99/how-to-test-oauth-recovery-emails-without-exposing-real-inboxes-hni