رمز عبور یک بار – جلوگیری از سوء استفاده از OTP در جریان ثبت نام برنامه

این ممکن است به نظر یک سوال open ended باشد، اما من می خواهم شانس خود را بگیرم و درک کنم که آیا بقیه جامعه در حال رسیدگی به این مسئله هستند.

بیایید بگویم برنامه ای است که به کاربران امکان می دهد ثبت نام با استفاده از شماره تلفن خود را.

پلتفرم برنامه

  1. Android
  2. iOS

برنامه جریان

  1. کاربر برنامه را باز میکند
  2. او با یک دکمه ورود / ثبت نام ارائه میشود
  3. اکنون میخواهد ثبت نام کند او یک کاربر جدید است. بنابراین او بر روی دکمه ثبت نام کلیک می کند و از او برای شماره تلفن او
  4. خواسته می شود وقتی شماره تلفن خود را ارسال می کند، او را از طریق SMS دریافت می کند. بگو که برنامه در واقع از API / ثبت نام که اس ام اس را راه اندازی می کند تماس می گیرد

خطر:
در حال حاضر برای هر SMS خروجی، هزینه های مالی درگیر است.

اقدامات پیشگیرانه / واکنشی کاهش یافته

  1. API نرخ محدود است (بر اساس شماره تلفن)
  2. نظارت و هشدار درست در محل وجود دارد. بنابراین اگر در همه موارد موارد سوء استفاده وجود داشته باشد، اقدامات شدید مثل مسدود کردن IP ممکن است رخ دهد.

مسائل

  1. اگر یک دشمن (به طور بالقوه یک رقیب) با API برخورد کند
    شماره تلفن های مختلف، منطق محدود کردن سرعت را به راحتی دور می اندازد.
  2. مسدود کردن IP همیشه ممکن نیست. بگو: اگر دشمن پشت شبکه NATed باشد، تمام کاربران واقعی پشت شبکه نیز از انجام هر گونه ثبت نام موفقیت آمیز مسدود می شوند.
  3. اگر دشمن تغییر آی پی ها (شاید با استفاده از Tor)، مرحله دوم کاهش در موارد فوق نیز از بین می رود.
  4. Captcha یک راه حل نیست زیرا آن را از بین می برد UX، مخصوصا هنگام برخورد با برنامه های تلفن همراه
  5. داشتن نام کاربری رمز عبور به جای OTP برای تأیید ثبت نام یک گزینه نیست، زیرا برنامه نیاز به یک شماره تلفن تأیید شده برای کارکردن دارد
  6. امضای دستگاه در هر دستگاه نیز می تواند به عنوان یک عامل برای محدود کردن سرعت استفاده شود، اما واقعیت این است که از دستگاه نیز بیش از HTTP (ها) می آید. از این رو، به راحتی قابل تغییر است. بنابراین این گزینه نیز غیرقانونی است.

در چنین وضعیتی، چگونه در برابر ریسک محافظت شود یا شاید بتوان آن را برای آن آماده کرد، اگر در کل نمیتوان آنرا مرتب کرد؟

آزمون نفوذ – Hydra – تمام رمزهای عبور کار می کنند

من می خواهم برخی از مکانیسم های وب سایت من را آزمایش کنم زمانی که رمز ورود یک کاربر چند بار در یک زمان کوتاه به صورت نامناسب در فرم ورود وارد شده است.

من اطلاعات زیر را دارم:

  • میزبان: 127.0.0.1 (همانگونه که من به صورت محلی امتحان میکنم)
  • روش: https-form-post (همانطور که سایت از HTTPS استفاده میکند
  • URL: / login
  • پارامترهای فرم: username = admin، password = از لیست رمز، submit_login (boolean)
  • من می خواهم از یک فایل رمز عبور (password.txt)

استفاده کنم ورود به سیستم کار نمی کند، یک صفحه نشان داده می شود، کدام عنوان اچ تی ام ال "ورود ناموفق" است – با این حال من مطمئن نیستم که چگونه این را به Hydra بگویم.

بنابراین من سعی کردم زیر اما نتیجه همه رمزهای عبور کار می کنند:

hydra -l admin -P password.txt 127.0.0.1 https-post-form "/ login: username = ^ USER ^ & password = ^ PASS ^ & submit_login & Login: Login failed" 19659002] خطای من کجاست؟