احراز هویت – فضای ذخیره سازی مخفی 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 و غیره این سناریو ها را اداره می کنند؟

نحوه انجام احراز هویت با ZAP زمانی که API فقط نشانه را در بدن XML می پذیرد؟

در حال حاضر در آزمایش یک برنامه زاویه ای 6 با استفاده از OWASP ZAP کار می کنم. من واقعا از این ابزار لذت می برم، اما مانند بسیاری از ما، با بخش احراز هویت مبارزه می کنیم و بدون آن کل ابزار تبدیل به یک همبرگر می شود.

مسیر ورود در localhost در / login و نقطه پایان API من https://api.mytestproject.com/auth تنها XML خام را قبول می کند مانند:


   1.0 
  
     ...
    
       testuser 
       تست 
       blablabla 
    
     ...
  

در پاسخ من یک نشانه دریافت می کنم، اما API نیاز به فرستادن در بدن را به عنوان فیلمی از هر درخواست و نه به عنوان یک عنوان مجوز دارد

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

jwt – چگونه مجوز پس از احراز هویت با استفاده از شناسه open شناسایی می شود

فرض کنید که یک مشتری یک شناسه شناسایی می کند و از یک سرور Auth به عنوان یک نتیجه از تأیید صحت موفق استفاده می کند. مشتری اکنون درخواستی را به سرور برنامه می فرستد. (درخواست شامل برچسب دسترسی و شناسه) است. به نظر من، سرور برنامه در حال حاضر برای تماس با سرور auth برای تأیید این نشانه ها. اگر پرونده ها معتبر باشند، سرور برنامه با درخواست ادامه می یابد. در غیر این صورت، درخواست را رد می کند. آیا این درست است؟

مسئله اصلی من با این تنظیم نیاز به تماس با سرور auth برای هر درخواست است. آیا روش استاندارد برای جلوگیری از این وجود دارد؟ نحوه استفاده از یک کلید مخفی (شناخته شده به هر دو سرور Auth و سرور برنامه) برای تأیید امضا – شبیه به JWT. در این مورد تفاوت بین openID اتصال + OAuth2 و JWT چیست؟