احراز هویت – فضای ذخیره سازی مخفی JSON Web Token

من در حال ساخت برنامه ای هستم که مشتری برای آن JWT صادر می کند. JWT برای هر درخواست به API من منتقل می شود. من در جهت میزبانی وب سرور و SQL سرور خود جدا از یکدیگر با استفاده از EC2 و RDS تمایل دارم.

SECRET = bin2hex (random_bytes (32))

راز را ذخیره کنید؟

  1. ایجاد یک پرونده در سرور من (خارج از وب روت من) که یک راز ذخیره می کند که توسط اسکریپت های PHP API من به آن دسترسی پیدا می کند. لیستی از اسرار فردی برای هر کاربر که توسط اسکریپتهای PHP API من قابل دسترسی است.
  2. ایجاد یک ستون SECRET در پایگاه داده من که هر کاربر دارای راز JWT خود است.

تفکر من در مورد شماره های 2 و 3 مانع از بی رحمی است حمله را به طور بالقوه بر همه تحت تأثیر قرار دهد.

احراز هویت – استفاده از دو نمک – یکی با رمز عبور ذخیره شده ، دیگری در یک ردیف تصادفی در یک جدول جداگانه ذخیره می شود

تصور کنید که یک سیستم ورود به سیستم ایجاد شده است ، و پسورد کاربر به این ترتیب حذف می شود:

 Users.password = sha384 (salt1 + password + salt2)

نتیجه ی این عمل و نمکی 1 به صورت جانبی در همان جدول ذخیره می شوند ، بیایید کاربران بگوییم.

salt2 ، با این حال ، این است. در یک ردیف تصادفی در یک جدول جداگانه ذخیره شده به نام UnorderedSalts .

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

 for (let i = 0؛ i <UnorderedSalts. طول ؛ من ++)
  if (sha384 (Users.salt1 + input.password + UnorderedSalts [i]) === Users.password)
    بازگشت درست است؛ // مسابقه یافت شد!

بازگشت به دروغ؛ // هیچ کبریتی پیدا نشد

از آنجا که نمک2 در همان سطر ذخیره نشده است نمک و رمز عبور ، محاسبه باید بسته به در مورد چه تعداد کاربر تنظیم شده است.

سوال من این است:

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

</p>
<pre>احراز هویت - استفاده از دو نمک - یکی با رمز عبور ذخیره شده ، دیگری در یک ردیف تصادفی در یک جدول جداگانه ذخیره می شود<br />

Google چگونه اطلاعات احراز هویت را در مرورگر ذخیره میکند؟

این ممکن است یک سوال اساسی یا یک تکراری باشد، اما من هنوز نمیتوانم جواب را پیدا کنم.

هنگامی که در مرورگر gmail را باز میکنم، به صورت خودکار وارد میشوید. به اعتقاد من قبلا کوکی های ذخیره شده. اگر کوکی ها را حذف کنم، مجبورم دوباره وارد سیستم شوید به این معناست که گوگل کلید های Auth را در کوکی هایی که هرگز منقضی نشده اند و یا در 2-3 سال از زمان حاضر، ذخیره می کند.

من شنیدم که کوکی ها را می توان کپی کرد. به این ترتیب، اگر کسی به کامپیوتر شما دسترسی داشته باشد، می تواند کوکی ها را کپی کند و می تواند به حساب ایمن شما دسترسی پیدا کند (با عرض پوزش شکاک می شود). بنابراین سرور باید زمان انقضا کوتاه تر (احتمالا یک روز حداکثر) را حفظ کند.

من می خواهم بدانم که چگونه Google یا سایر سایت های مانند Quora و غیره این سناریو ها را اداره می کنند؟

رمزگذاری – رمزهای عبور: ذخیره رمزگذاری شده، مشاهده در متن ساده

من قبلا این سوال را در stackoverflow پرسیدم اما اطلاع دارم که کمی بیش از حد وسیع است و به جای آن در اینجا بیشتر متکی است. بنابراین اجازه دهید فقط کپی و چسباندن آنچه را که از آن پرسیدم کپی کنم:

من یک معضل مربوط به امنیت دارم که من نمیتوانم از خودم درباره امنیت برنامههای وب استفاده کنم.

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

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

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

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

خود تکنولوژی خود را مهم ترین چیز در اینجا نیست، اما من قصد دارم برای ایجاد این برنامه با استفاده از چارچوب پی اچ پی و لارو. [19659002] برای نگهداری و مشاهده یک چیز است، چیز دیگری این است که چگونه چنین برنامه هایی را از انواع مختلف پست های رمزگذاری شده، خرابکاری های پایگاه داده و حملات مشابه محافظت کنید؟