mongodb – آیا استفاده از Procedures Stored در جانگو امن است؟

ما محیط تولیدی با MongoDB را به عنوان پشت صحنه داریم. ما انتظار داریم که کاربران نزدیک به 300K رو به رو شوند. این باید ارتباطات زیادی داشته باشد. ما ثبت نام خواهیم کرد و همچنین وارد شوید.

ما گزینه هایی برای اجرای پرس و جو به طور مستقیم به عنوان روش های ذخیره شده یعنی. از طریق جاوا اسکریپت در سرور یا از Django برای ایجاد API های REST استفاده کنید و از آنها استفاده کنید.

ما به دنبال و منفی هر دو هستیم. اگر توسعه دهندگان با تجربه بتوانند به ما کمک کنند بسیار مفید خواهد بود. کدام بیشتر مفید خواهد بود؟

گذرواژه – پیوند سرور ایمیل با پایگاه داده برنامه

من یک برنامه وب در node.js دارم که توسط یک پایگاه داده MongoDB که داده های کاربر را ذخیره می کند، پشتیبانی می کند. من می خواهم کاربران خود را یک حساب ایمیل بگذارم، بنابراین یک سرور ایمیل با استفاده از Postfix تنظیم کردم ، dovecot، و غیره … مشکل من این است که من می خواهم دو پایگاه داده کاربر را پیوند دهم. در حال حاضر من postfix و dovecot پیکربندی شده برای استفاده از کاربران مجازی ذخیره شده در پایگاه داده MySQL (واقعا MariaDB)، و این کار خوب است (من می توانم دسترسی و ارسال ایمیل بر روی IMAP و غیره …). با این حال، من می خواهم که کاربران خود بتوانند از همان رمز عبور برای IMAP برای ورود به برنامه وب استفاده کنند. من خوشحالم که یک API PHP را برای ایجاد کاربران در سرور پست الکترونیکی و غیره بنویسید، اما مسئله من این است که چگونه رمز عبور را مدیریت کنید. همانطور که می بینم، دو گزینه وجود دارد؛

  1. من می توانم کلمه عبور متن ساده را از سرور برنامه های وب خود به سرور پست الکترونیکی خود منتقل کنم زمانی که یک کاربر ثبت نام یا تغییر رمز عبور. پس از آن، به طور واضح در سرور پست الکترونیکی هشدار داده می شود و در پایگاه داده ذخیره می شود و در سرور درخواست شده ذخیره می شود و در پایگاه داده MongoDB ذخیره می شود. این باعث می شود که من اشتباه کنم – رمز عبور متن ساده را با دو بار تکرار رمز عبور ارسال کنم
  2. من می توانم رمزهای عبور هشدار را از سرور برنامه به سرور ایمیل انتقال دهم و آنها را دوباره ذخیره کنم بدون . باز هم، این احساس بسیار خجالتی است، از دیدگاه سرور ایمیل، گذرنامه ها را می پذیرد و آنها را در متن واضح ذخیره می کنند.

آیا گزینه های دیگری برای اجازه دادن به کاربران من برای ورود به هر دو سرور با همان اعتبار وجود دارد؟ چه مسائل امنیتی با دو گزینه ای که از بالا مطرح کردم وجود دارد؟

TLS – چگونه حمله MiTM در گواهی خود امضا انجام شد در حالی که کلید خصوصی توسط ما تولید شده است؟

TL؛ DR: استفاده از گواهی های خود گواهی به این معنا نیست که MITM امکان پذیر است و استفاده از یک گواهی صادر شده توسط یک CA عمومی به این معنا نیست که MITM غیرممکن است. اما احتمال دارد که MITM ممکن است در صورت استفاده از گواهی های خودمختار مورد استفاده قرار گیرد زیرا مشتریانی که با گواهینامه های خود دارای گواهینامه برخورد می کنند اغلب با این روش اشتباه با آنها برخورد می کنند.


با استفاده از یک گواهی خودکارتانه MITM به طور کلی اجازه نمی دهد و استفاده از گواهی صادر شده توسط یک CA عمومی در برابر MITM به طور کلی محافظت نمی کند. به غیر از حفظ خصوصی خصوصی خصوصی، حفاظت مهم در برابر حملات MITM، نوعی گواهی در سرور نیست بلکه نحوه بررسی این گواهینامه در سرویس گیرنده، یعنی اگر سرور به درستی با استفاده از یک گواهی تأیید شود یا خیر.

روش ثابت برای تأیید هویت یک سرور با استفاده از یک گواهینامه امضا شده توسط یک CA عمومی، بررسی موضوع گواهینامه، زنجیره اعتماد، انقضا و غیره است. – چارت گواهینامه SSL 101: چگونه مرورگر در واقع اعتبار یک گواهی سرور مشخص را تأیید می کند؟ برای جزئیات بیشتر اما اگر یک مشتری این چک را انجام نمی دهد و یا این چک ها را درست انجام نمی دهد، ممکن است حمله کننده در مسیر گواهی خود را ارائه دهد و مشتری متوجه آن نخواهد شد. در گذشته چنین خطاهایی ناشی از جهل یا به علت اشکالات رخ داده است، مثلا گواهینامه ها را بررسی نکنید، اعتبار موضوع را بررسی نکنید، محدودیت های اساسی را بررسی کنید و غیره.

با گواهینامه خود امضاء شده، تأیید صحت سرور مجاز است همچنین: اگر مشتری می داند که گواهی انتظار دارد (یا کلید عمومی آن، یا یک هش از آن …) تا جلو، مشتری می تواند بررسی کند که گواهی تحویل داده شده مطابق با انتظار است. این نوع تأیید در واقع در موارد بسیاری استفاده می شود. اما در بسیاری از موارد دیگر این اشتباه انجام می شود: غیر معمول نیست که مشتریان به سادگی تمام گواهینامه های گواهینامه را به طور کامل از کار انداخته اند، در صورتی که گواهی خود گواهی خود را انتظار داشته باشند تا انتظار یک گواهی خاص خود را امضا کنند. با چنین مشتریانی که شکسته اند، MITM آسان است، زیرا مهاجم فقط می تواند از یک گواهی دلخواه استفاده کند و مشتری آن را قبول می کند.