تأیید اعتبار – مجوز ارتباط پیوندی بین برنامه ها از طرف کاربر

من در حال تلاش برای تعویض سر من به سوال بعدی امنیت وب است. بگو ما سیستمی را که در تصویر زیر نشان داده شده است تنظیم می کنیم.

 سیستم

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

برنامه اصلی می تواند با این سیستم های دیگر ارتباط برقرار کند و برعکس. بیشتر زمان آن در زمینه تعامل کاربر است.

 کاربر با برنامه اصلی ارتباط برقرار می کند. برنامه اصلی درخواست برنامه دیگر را در متن درخواست کاربر می دهد.

درخواست از برنامه اصلی به برنامه دیگر باید (1) مجاز باشد و (2) ما می خواهیم در "برنامه های دیگر" که از طرف کاربر تماس آغاز شده است (نه "برنامه اصلی"، بلکه "کاربر").

واقعا وسوسه انگیز است که فقط اخطار کاربر oAuth را از برنامه اصلی به برنامه دیگر ارسال کند. اما این ممکن است مفاهیم امنیتی جدی را به عنوان "برنامه دیگری" در حال حاضر تمام حقوق کاربر را به خلق با برنامه اصلی (https://tools.ietf.org/html/rfc6749#section-10.3).

این ممکن است بد نیست، چون ما خودمان این خدمات را مدیریت می کنیم، اما این مطمئنا مناسب نیست در صورتی که ما با برنامه های شخص ثالث برخورد کنیم.

خلاصه، سوال من این است: اگر کاربر شروع به کار کند یک درخواست در یک برنامه که به نوبه خود باید یک برنامه دیگر را برای تکمیل درخواست درخواست کند چگونه می توانیم:

  • مجاز این تماس دوم از برنامه به برنامه های دیگر (با توجه به کاربر مجاز است و ما یک سیستم تأیید هویت مرکزی oAuth)
  • و هنوز به هر دلیلی از طرف کاربر که تماس گرفته شد، می دانیم

در حالت ایده آل، گیرنده انتهای تماس حتی نمی داند که تماس توسط برنامه دیگری آغاز شده است (فقط فکر می کند که مستقیم است از یک کاربر تماس بگیرید) این فقط استفاده از رهگیرهای امنیتی oAuth در حال حاضر است.

oauth – آیا نیاز به ایجاد یک کاربر در پایگاه داده دارم؟

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

 باید پایگاه داده من از کاربر غیر ریشه استفاده شود

بله، شما باید یک کاربر غیر ریشه (یکی برای هر یک از برنامه های منحصر به فرد دسترسی به پایگاه داده را برای جلوگیری از وردپرس خود را با استفاده از DB (ایجاد برخی از واکشی وردپرس تصادفی است که در آینده می آید) از داشتن دسترسی کامل به شما فوق العاده فانتزی سفارشی وب-apps-db و گرفتن یک لیست کامل از تمام ایمیل های کاربر شما که جمع آوری کرده اید.

 باید یک جدول کاربر را در پایگاه داده من ایجاد کنم

تأیید اعتبار یا نه … این نوعی بی فایده است. اگر میخواهید پیوند [email protected] را با نام مستعار ترجیح دهید پسر فوق العاده شاد … یا یکی از کاربران خود تصمیم میگیرد که qmail بکشد و آنها می خواهند تغییر کنند حساب های ایمیل وجود دارد به [email protected] … جدول کاربر با UUID داخلی برای هر کاربر ممکن است بسیار مفید باشد.

 آیا من نیاز به ذخیره یك رمز عبور برای گذرواژه

بله و نه … اعتماد کامل به برخی از احراز هویت سایر وب سایت ها ممکن است شما را از داشتن نگرانی در مورد داشتن هک کردن db محلی خود و نیاز به گزارش دهی چند هزار هش رمز عبور کاربر خود در وحشی. اما در عین حال، اگر یک آسیب پذیری در احراز هویت شخص ثالث پیدا شود، می تواند شما را در وضعیت بدی قرار دهد؛ زیرا شما کنترل آن را بر روی شخص ثالث نداشته اید … و هیچ چیز به عقب بر نمی گردد اگر این شخص ثالث

این بیشتر از یک تصمیم کسب و کار از یک تصمیم امنیتی است … بسیاری از جوانب مثبت و منفی از رفتن به هر راه وجود دارد

احراز هویت – حفاظت از کاربر از دسترسی غیر مجاز

بنابراین ما در حال برنامه ریزی برای اضافه کردن یک ویژگی به برنامه ما است که شبیه آنچه گوگل انجام می دهد، اما کمی سخت تر:

  1. شما لیستی از جلسات که به عامل کاربر و آدرس IP (؟) ( گوگل یک مکان را نشان می دهد)
  2. 2FA مورد نیاز است تنها زمانی که شما سعی می کنید از یک دستگاه که برای 30 روز گذشته تایید نشده است وارد شوید.
  3. اگر تلاش ورود به سیستم از یک جفت کاربر / agent / IP جدید ساخته شود ، ما می خواهیم یک پیوند را با یک نشانه برای آدرس ایمیل خود برای تأیید ورود به سیستم ارسال کنیم.
  4. هنگامی که روی پیوند کلیک می کنند، اگر 2FA فعال باشد، خواهیم از 2FA برای تایید ورود به سیستم

چند چیز ما در مورد:

  1. با ایجاد کاربر اقدام به تایید ورود به سیستم، به جای گوگل که در آن فقط به شما می گوید از ورود … ما امیدواریم برای جلوگیری از تعداد بیشتری از ورود به سیستم های غیر مجاز. (در حال حاضر ما هر بار که کاربر وارد سیستم می شود، هر بار که وارد سیستم می شود، ما به آنها عامل کاربر و منطقه می گوئیم.)
  2. با درخواست از 2FA برای استفاده از لینک، ما امیدواریم که بیشتر از ورود نامحدود محافظت کنیم (در حالی که می توانید از طریق ایمیل دسترسی، ما قبل از ورود به صفحه برای ورود به گذرواژه جدید بعد از کلیک روی پیوند بازنشانی، باید قبل از ورود به سیستم 2FA را مجددا اتخاذ کنیم.)
  3. بزرگترین نگرانی ما این است که ما به طور تصادفی اشتباه نمیکنیم و برخی از کاربران باید پرش کنند از طریق این حلقه یک میلیارد بار در همان جلسه، زیرا حامل تلفن همراه خود را به طور مداوم IP خود را تغییر دهید … و غیره

بنابراین من متوجه است که محدودیت IP بر اساس احتمالا خیلی خوب نیست … بنابراین شاید نگاه کردن منطقه از طریق IP و فقط سفید لیست منطقه؟ اما پس از آن یک هکر فقط می تواند به راحتی عامل کاربر را فریب دهد و از یک پروکسی استفاده کند.

توجه: من درک می کنم این ما توقف همه برای امنیت نیست، اما ما می خواهیم این لایه را اضافه کنیم تا موارد دسترسی غیر مجاز را کاهش دهیم.

سوال من: چه مدل کلی برای محدودیت جلسه / ورود به یک توازن خوب بین "جلوگیری از هکرها / jerks جدید از ورود به سیستم به عنوان شما زمانی که رمز عبور خود را حدس زد / فیشش آن" و "کاربر مزاحم همیشه با لینک های پست الکترونیکی "؟

آیا امکان ارسال یک کاربر به یک رمز عبور به طور تصادفی ایجاد شده در حالی که هنوز هم آن را امن ذخیره می کنید؟

توجه: من می دانم که بسیاری از سوالات مشابه در مورد ذخیره کلمات عبور وجود دارد، با این حال، من این را ارسال، زیرا معتقدم که آن را از سوابق ذخیره سازی رمز عبور موجود به اندازه کافی متفاوت است، زیرا این سرویس خاص به جای کاربر (عذرخواهی برای متن عجیب و غریب، پس از خواندن سوال بعد از خواندن سوال بعد از نوشتن این یادداشت پس از آن، بعد از خواندن آن توجه بیشتری خواهد شد)

متوجه شدم که سرویس VPN من استفاده می کنم (PIA) در لیست متخلفان متن ساده است، شکی نیست که آنها چنین کاری را انجام می دهند با توجه به این که در غیر این صورت به طور کامل به حریم خصوصی و امنیت متعهد می شوند.

آنچه که می دانم این است که: الف) وقتی که من ثبت نام کردم، رمز عبور خود را در ایمیل فرستادم؛ ب تولید شده (به صورت تصادفی) و از نظر چشم انداز قدرت رمز عبور امن است. (هنگام ثبت نام یک رمز عبور را وارد نکردم، آنها به من یک رمز عبور دادند که من می توانستم آن را تغییر دهم).

در اینجا چیزی است که فرض می کنم:

  1. ثبت نام کاربر
  2. ایجاد یک رمز عبور
  3. پست الکترونیک رمز عبور
  4. رمز عبور را هش کنید و آن را ذخیره کنید

با توجه به امنیت روش انتقال (ایمیل)، من می خواهم بدانم که آیا چیزی شبیه آنچه که در بالا ذکر شد، امکان معقولی برای امنیت راهی برای اداره گذرواژهها

ویرایش: در پاسخ به یک نظر، من میخواهم روشن کنم که منظورم این است که آیا راهی وجود دارد که سرویس بتواند یک جریان مانند بالا را اجرا کند این بدون راه حل های بسیار زیاد امن است

ردیابی کاربر – درخواست HTTP از Embeds Trackable

من اینجا خیلی خوشحال هستم لطفا با من، یک تازه وارد امنیتی، آرزو داشته باشید.

من یک وبسایت دارم که می خواهم کاربر یک فرم را پر کند. این فرم قبلا در وبسایت دیگر من (که دارای قابلیتهای بیشتری است) وجود دارد، اما به دلیل نام وب سایت / url ممکن است یک خطر امنیتی فیزیکی برای کاربران سایت اول (کشورهایی باشد که کاربران در آن زندگی می کنند می توانند مورد آزار و اذیت قرار گیرند آنها برای رفتن به وب سایت)

با قرار دادن هر چیزی از سایت 2 به سایت من 1، من قرار دادن کاربران من در معرض خطر؟ آیا می توان درخواست های HTTP را از طریق فرم وب بر روی جاسازی نمودن کشف کرد؟ هر درخواستی از طریق جاسازی شده چگونه انجام می شود؟ آیا به نظر میرسد که کاربر به این وبسایت راه یابد؟