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

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

SECRET = bin2hex (random_bytes (32))

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

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

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

چگونه Access Token فیس بوک برای دسترسی به اطلاعات کاربر فیس بوک استفاده می شود؟

فیس بوک "یک مسئله امنیتی" را که بر 50 میلیون حساب تاثیر می گذارد، کشف کرد.

بر طبق فیس بوک،

این به آنها اجازه داد تا برچسب های دسترسی فیس بوک را که می توانستند سرقت کنند
  سپس از حساب کاربری خود استفاده کنید

این مورد را جست و جو کردم، اما من نمیتوانم هیچ مقالهیی پیدا کنم، چگونه میتوانم به حساب فیس بوک دسترسی پیدا کنم.

بنابراین نمیتوانم این مسئله امنیتی را درک کنم. آیا کسی می تواند به من بگوید که چگونه یک هکر میتواند به حساب فیس بوک دسترسی پیدا کند، اگر می داند که کد دسترسی وجود دارد؟

jwt – چطور Apple Token موزیک امن است؟

محیط زیست:

  • زبان: پایتون
  • چارچوب: جانگو
  • پایگاه داده: Postgres

TL؛ DR
برنامه ما نیاز به انجام عملیات پس زمینه است که نیاز به نشانه اپل موسیقی. پس از آنکه کاربر برنامه را مجاز به دسترسی به حساب کاربری خود کردم، یک اکانت از اپل دریافت کردم. چگونه می توانم آن را به صورت امن در پایگاه داده خود ذخیره کنم؟ آیا باید آن را رمزگذاری کنم؟

برنامه در حال حاضر با استفاده از این نشانه زمانی که کاربر یک عمل را آغاز می کند اما آن را پرتاب می کند. من می خواهم راهی برای ذخیره آن در پایگاه داده را به طور ایمن.

نحوه دریافت Token

این صفحه در فایل های Apple Music API کمیاب است، اما خلاصه ای در مورد نحوه ایجاد Token می دهد /abtained.

به نظر می رسد که برای هر درخواستی که باید با داده های کاربر انجام شود، ما باید دو نشانه را ارسال کنیم: نشانگر توسعه دهنده (JWT تولید شده) و نشانگر کاربر (که فقط یک رشته طولانی است). [19659010] curl -v -H 'Music-User Token: [music user token]' -H 'اجازهنامه: Bearer [developer token]' 'https://api.music.apple.com/v1/catalog/us/songs/203709340 "

نشانه کاربر اعطا شده است که کاربر اجازه برنامه خاص به خواندن / تغییر خود کتابخانه Apple موسیقی

کد کاربر به عنوان مثال:

ApSbGT6HcRA + ABZ + b88ZNu / TQJg + MRjcEJwkA3qz8zamj3z7POEGvsDrihYVn8XqLZmQvbSQaMmsgpjjnxv0MTBpqHNFFQiuzxBjVUGgS … [turncated]

من سؤال این است: آیا فقط میتوان به عنوان یک StringField در پایگاه داده ذخیره کرد، آیا میتوان آن را تنها با نشانگر توسعه دهنده مورد استفاده قرار داد؟ یا باید آن را رمزگذاری کنم؟

xss – برنامه تک صفحه و Token CSRF هر بار تولید می شود

من باید از یک صفحه یک صفحه استفاده کنم (React، Ember، Angular، I do not care) با مکانیزم محافظت از Rails CSRF

من تعجب می کنم که آیا من نیاز به ایجاد زمان eome برچسب در ApplicationController مانند این:

 کلاس ApplicationController <ActionController :: Base

  بعد از عمل: set_csrf_cookie

  def set_csrf_cookie
    کوکی ها ["X-CSRF-Token"] = form_authenticity_token
  پایان

پایان

یا من فقط می توانم یک نشانه یک بار ایجاد کنم .

در هر جلسه یا هر (غیر GET) درخواست؟

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

CLARIFY :

برنامه های پیش فرض Rails (صفحات ارائه شده توسط سرور) به روز رسانی csrf-token هر زمانی که من به یک صفحه مراجعه می کنم. بنابراین هر زمانی که تغییر می کند

بنابراین در وضعیت من اگر یک علامت جدید برای هر after_action ایجاد کنم، CSRF-Token قبلی هنوز برای این جلسه مناسب است. بنابراین، چگونگی جعل قبلی را نامعتبر کنید؟ من باید

از آنجا که تنها اگر من نامعتبر آن را حس می کند، درست است