نحوه استفاده از Oauth2 و JWT برای حفاظت از معماری میکرو سرویس؟

ما در حال بررسی مکانیزم مناسب برای ایمن سازی سرویس های میکروسکوپی هستیم که ما از طریق برنامه مدیریت API به عنوان نقاط پایانی API ارائه می دهیم.

اساسا ما نیاز به مکانیزم امنیتی غیرقانونی مانند JWT برای ایمن سازی هر نقطه پایانی API دارد

 اینجا را وارد کنید

اما به نظر می رسد که هر درخواست باید از طریق Auth Server و پس از آن مکان بسیار شلوغ خواهد شد. هر مکانیسم استاندارد برای غلبه بر این وضعیت وجود دارد. ما در مورد ارائه نشانه دسترسی جداگانه به مشتری به جای نشانه اصلی Auth شنیدیم، اما با تأیید نشانه دسترسی از سطح سرویس microservice مواجه شدیم. هر راه حل واقعا قدردانی خواهد شد

با تشکر از قبل.

چگونه حفاظت از حریم خصوصی macOS Mojave کار می کند

اپل حفاظت از حریم خصوصی بیشتر را در macOS 10.14 Mojave اضافه می کند. برنامه های مک باید قبل از دسترسی به داده ها مانند عکس های شما، ایمیل ها، وب کم، میکروفون، تقویم ها و مخاطبین، مجوز را درخواست کنند. اگر یک برنامه سعی در دسترسی به منابع محافظت شده بدون اجازه داشته باشد، ممکن است سقوط کند.

آنچه شما باید بدانید

macOS Mojave محافظت بیشتری از داده های خصوصی شما را فراهم می کند. در گذشته، برنامههایی که در مک شما اجرا میشد، میتوانستند بیشتر از این دادهها را بدون اجازه شما درخواست کنند. در حال حاضر، برای محافظت بهتر در برابر نرم افزارهای مخرب و یا برنامه های نابجا که اطلاعات شما را بدون اجازه شما مشاهده می کنند، برنامه ها باید دسترسی به منابع بیشتری را درخواست کنند.

این سیستم مجوز شبیه به Apple iPhone و iPads است. با این حال، این کمی آرام است زیرا اپل سیستم عامل iOS تلفن همراه را برای مجوز از روز اول طراحی کرده است. در سمت MacOS، جهانی از برنامه های Mac قدیمی تر است که مجوز را درک نمی کنند. این برنامه ها فرض می کنند که به این منابع دسترسی دارند، که می تواند باعث مشکلات شود.

اکثر اوقات شما حتی این مجوز جدید را متوجه نمی شوید و لازم نیست که در مورد آن فکر کنید. هر گونه مشکلی باید کمتر شود زیرا توسعه دهندگان برنامه ها برنامه های خود را به درستی با macOS Mojave هم کار می کنند. اما در حین اجرای برنامه های قدیمی تر ممکن است برخی مسائل حلزونی داشته باشید.

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

مرتبط با: همه چیز جدید در macOS 10.14 Mojave، در دسترس پاییز 2018

چه داده هایی باید از نرم افزار بخواهید برای؟

[19659004] برنامه ها قبل از دسترسی به خدمات مکان، مخاطبین، تقویم ها، یادآورها و کتابخانه های عکس شما باید قبل از دسترسی به شما مجوز داده شوند. آنها همچنین باید قبل از دسترسی به دوربین، میکروفون یا ویژگی های اتوماسیون مک خود مجوز خود را دریافت کنند. مهم این است که توسعه دهنده برنامه باید این قابلیت ها را به عنوان بخشی از برنامه اعلام کند. به عبارت دیگر، اگر توسعهدهنده برنامه برنامه را برای درخواست اجازه عکس درخواست نکند، نمیتوانید به برنامه دسترسی داشته باشید به کتابخانه عکس شما.

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

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

مرتبط: چرا برخی از برنامه های مک نیاز دارند "کنترل این رایانه با استفاده از ویژگی های دسترسی"

چگونه به دسترسی به داده ها دسترسی به داده ها

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

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

برای پیدا کردن این تنظیمات، روی منوی Apple> تنظیمات سیستم> امنیت و حریم خصوصی> حریم خصوصی کلیک کنید.

19659004] از طریق دسته بندی ها بروید تا ببینید کدام برنامه های نصب شده قادر به دسترسی به انواع مختلف محتوا هستند. برای مثال، برای دیدن برنامه هایی که می توانند به عکس های شما دسترسی پیدا کنند، روی دسته "عکس ها" کلیک کنید.

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

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

برای انتخاب برنامه هایی که می توانند سایر اطلاعات برنامه های دیگر دسترسی داشته باشند، بر روی "اطلاعات برنامه" کلیک کنید. ابتدا روی نماد قفل کلیک کنید و رمز عبور خود را تایپ کنید. سپس می توانید بر روی دکمه "+" کلیک کنید تا هر برنامه نصب شده در این لیست اضافه شود و به اطلاعات برنامه مانند ایمیل شما، پیام ها، تاریخچه، کوکی ها و پشتیبان ها دسترسی پیدا کند.

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

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

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

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

اگر برنامه خراب شود یا نمی تواند به داده دسترسی پیدا کند، اما برای دسترسی مجاز نیست، به پنل امنیتی و حریم خصوصی شما و در صورت امکان دسترسی به برنامه به دسته داده ها را ارائه می دهد.

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

اگر برنامه نیاز به دسترسی به نوع داده داشته باشد، اما شما نمی توانید به آن داده ها دسترسی داشته باشید، با توسعهدهنده برنامه تماس بگیرید و اجازه دهید برنامهنویس مشکل را بشناسد. این به احتمال زیاد یک مسئله است که توسعه دهنده برنامه نیاز به تعمیر دارد. مشکلات را باید کمتر مورد توجه قرار گیرد زیرا برنامه نویسان برنامه های خود را برای Mojave به روز می کنند.


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

کوکی ها – حفاظت CSRF برای درخواست های GET مورد نیاز است

یک API REST دارم که اجازه می دهد تا کاربران تأیید اعتبار اطلاعات خود را در مورد حساب خودشان بخوانند و تغییرات را در حساب هایشان انجام دهند. برای احراز هویت، از JWT ها به عنوان کوکی های httpOnly ذخیره می شود. برای محافظت در برابر حملات CSRF، API REST همچنین مشتری را با آنچه زاویه ای نامیده می شود، نشان می دهد "XSRF token"

روش زاویه ای برای محافظت از CSRF این است که علامت XSRF را برای API شما ایجاد و دوباره آن را به API ارسال نماید هر درخواست در هدر "X-XSRF-Token". این به API شما بستگی دارد تا تعیین کند که آیا درخواست مجاز باشد یا نه. یک اسکریپت که در یک وبسایت خصمانه اجرا می شود، به نشانه XSRF دسترسی نخواهد داشت و بنابراین نمی تواند آن را همراه با درخواست های CSRF ارسال کند.

وقتی برای اجرای درخواست های اولیه خود در Angular با استفاده از HttpClient رفتم متوجه شدم که HttpXsrfInterceptor هدر X-XSRF-Token را با درخواستهای GET و HEAD ارسال نمی کند.

از نظرات من آنلاین خواندن، حفاظت از CSRF برای درخواست های GET مورد نیاز نیست زیرا آنها نمی کنند (یا نباید آنها را ) هر گونه اطلاعات را تغییر دهید بیشترین حمله یک حمله CSRF با یک درخواست GET می تواند REST API ارسال اطلاعات حساس به مرورگر وب کاربر باشد. وب سایت خصمانه نمیتواند این اطلاعات را ببیند.

اگر یک وبسایت خصمانه سعی کند یک درخواست CSRF GET مانند این


صادر کند، سپس اطلاعات حساس از API به وب سایت انتقال مییابد، اما وب سایت خصمانه نمی توانم آن را ببینم، بنابراین همه چیز خوب است.

اگر یک وب سایت خصمانه سعی کند یک درخواست CSRF POST مانند این


را صادر کند ...

پس از آن وب سایت خصمانه هنوز هیچ اطلاعاتی را نمی بیند، اما هنوز هم می تواند به یک کاربر آسیب برساند. اگر API نیازمند هدر X-XSRF-Token باشد، این حمله نمی تواند موفقیت آمیز باشد.

اما اگر وب سایت خصمانه مرورگر را مجبور به درخواست GET می کند مانند:


بعضی از سیاست های CORS این را متوقف می کنند، اما سایر سیاست های CORS همچنان این اتفاق می افتد.

به نظر می رسد که نیاز به حفاظت CSRF در درخواست های GET، این آسیب پذیری را کاهش می دهد.

آیا چیزی مهم را از دست می دهم؟

زیرساخت کلید عمومی – حفاظت از کلید خصوصی برنامه های چت معمول با 2FA

می گویند یک کاربر از یک برنامه چت رایج مانند Telegram، Signal، Whatsapp، Ricochet استفاده می کند.
دستگاه او هک می شود و کلید خصوصی به سرقت رفته است. برای استفاده از نرم افزار PGP با استفاده از ایمیل، می توانید از دو عامل تأیید اعتبار استفاده کنید و به عنوان مثال کلید yubikey را ذخیره کنید. آیا چیزی مشابه با آن برنامه های چت ممکن است، به عنوان مثال دستگاه 2FA باید در همه زمان ها متصل شود و بدون آن چت امکان پذیر باشد؟

xss – حفاظت از وب سایت در برابر حملات با iframe برای جاوااسکریپت تولید شده توسط کاربر؟

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

اکنون می دانم که مردم می توانند سایت من را خیلی بد با XSS و چیزهای دیگر هک کنند، بنابراین من چند راه برای جلوگیری از ویرانی آوردم :

  1. به طور معمول، مردم جاوا اسکریپت و HTML خود را در یک فرم می نویسند. این متن خالص است هیچ چیز کارکردی نیست.

  2. وقتی میخواهید کد را آزمایش کنید، دادهها از www.A.com به www.B.com ارسال میشوند

  3. در این دامنه، دادهها به یک iframe با ویژگی sandbox در بدون گزینه "allow-top-navigation"

  4. سپس iframe به www.A.com فرستاده می شود

  5. www.A.com دریافت iframe و آن را به عنوان یک کودک به DOM اضافه می کند.

  6. کاربر می بیند iframe و می تواند با آن ارتباط برقرار کند.

آیا این به اندازه کافی امن است؟ یا من از دست رفته چیزی مهم است؟