معرفی CORS برای مبتدیان

نمی دانید CORS چیست (تقسیم منابع متقابل)?


در فیلم های جاسوسی ، مأمورین امنیتی روشی رمزگذار برای انتقال اطلاعات بین خود دارند. از آنجا که آنها بیشتر اطلاعاتی را منتقل می کنند که در صورت عدم دسترسی دشمنان ، علیه آنها می تواند استفاده شود ، باید اطمینان حاصل کنند که افرادی که اطلاعات را دریافت می کنند ، احزاب قابل اعتماد هستند. همین مسئله در مورد افرادی که اطلاعات مذکور را ارسال می کنند نیز صدور می شود هنگامی که به فرستنده و گیرنده اعتماد داشته باشید ، می توانید اعتبار و امنیت اطلاعات را تضمین کنید.

https://pt.slideshare.net/atirekgupta/selenium-workshop-34820044

ماکت از این سناریو در ارتباط بین مرورگرها و سرورهای وب اتفاق می افتد ، و به آن گفته می شود سیاست همان مبدا.

طبق MDN:

 سیاست همان مبدا یک مکانیسم مهم امنیتی است که چگونگی تعامل یک سند یا اسکریپت از یک مبدأ را می تواند با منبع منشأ دیگری تأثیر بگذارد. این امر به جداسازی اسناد بالقوه مخرب کمک می کند ، وکتورهای حمله احتمالی را کاهش می دهد.

CORS چیست؟?

در یک مورد از زندگی واقعی ، هنگامی که مأمورین امنیتی این قانون را صادر می کنند که ارتباطات فقط باید بین عاملان آن به عنوان وسیله ای برای امنیت اتفاق بیفتد ، این شبیه به سیاست همان مبدا است. با این وجود ، ممکن است مواردی وجود داشته باشد که آنها نیاز به تعامل با جهان خارج داشته باشند. یا با عاملان سایر تجهیزات امنیتی ، برای این اتفاق می توانند یک اقدام امنیتی دیگر را برای آن اجرا کنند تأیید کنید این عاملان این تأیید بسته به عملكردهای درگیر می تواند به روشهای مختلفی انجام شود. در مورد ارتباطات در اینترنت, CORS مکانیسمی که امکان استفاده مرورگرها را برای دسترسی به منابعی فراهم می کند که در ابتدا قادر به دسترسی به آنها نخواهند بود زیرا این منبع منشاء دیگری دارد.

به اشتراک گذاری منابع Cross-Origin (CORS) مکانیزمی است که از هدرهای HTTP اضافی استفاده می کند تا به مرورگرها بگوید یک برنامه وب را با یک مبدا اجرا کنند ، دسترسی به منابع انتخاب شده از یک مبدأ دیگر..

من بیش از یک بار در مورد منشا صحبت کرده ام ، و شما احتمالاً تعجب می کنید که این به چه معنی است. مبدأ توسط پروتکل ، دامنه و پورت URL تعریف می شود. هنگامی که API خود را در مبدأی مانند https://api.geekflare.com:3001 و جلوی خود در https://geekflare.com دارید ، گفته می شود که منشاء متفاوت است. در این شرایط ، به CORS نیاز خواهید داشت تا بتوانید به هر دو هدف به منابع دسترسی پیدا کنید.

هنگامی که درخواست ها به یک سرور انجام می شود ، مرورگرها (مشتری) و سرورها درخواست ها و پاسخ ارسال می کنند ، هدرهای HTTP گنجانده می شوند. در بین این هدرها ، هدرهای اضافی برای جلوگیری از انسداد مرورگر ارتباطات درج شده است.

چرا مرورگر ارتباط را مسدود می کند?

ویژگی های امنیتی مرورگر آن است. اگر درخواست از مبدأ متفاوت با مشتری باشد این کار را انجام می دهد. هدرهای اضافی موجود در نتیجه CORS راهی برای گفتن مشتری است که می تواند از پاسخی که دریافت کرده استفاده کند..

سرصفحات CORS

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

هدر پاسخ

این عناوینی هستند که سرور در پاسخ خود ارسال می کند.

  • Access-Control-Allow-Origin: این برای مشخص کردن مبدا مجاز برای دسترسی به منبع روی سرور استفاده می شود. می توان مشخص کرد که فقط درخواست هایی از یک منبع خاص مجاز هستند – دسترسی-کنترل-اجازه-مبدا: https://geekflare.com ، یا اینکه مبدا اهمیتی ندارد – دسترسی-کنترل-مجاز بودن-مبدا: *.
  • Access-Control-Expos-Headers:: همانطور که از نام آن پیداست ، این عناوینی را که عنوان مرورگر به آنها دسترسی دارد ، لیست می کند.
  • Access-Control-Max-Age: این نشانگر مدت زمانی است که می توانید پاسخ درخواست درخواست پرواز را ذخیره کنید.
  • Access-Control-Allow-Credentials:: این نشان می دهد مرورگر می تواند وقتی درخواست اولیه با یک اعتبار انجام شد ، از پاسخ استفاده کند.
  • Access-Control-Allow-Methods:: این روش یا روش هایی را نشان می دهد که هنگام تلاش برای دسترسی به یک منبع مجاز هستند.
  • دسترسی-کنترل-اجازه-هدرها: این نشان می دهد که می توان از هدرهای HTTP در یک درخواست استفاده کرد.

در اینجا نمونه ای از پاسخ به نظر می رسد

HTTP / 1.1 204 بدون محتوا
دسترسی-کنترل-اجازه-مبدا: *
دسترسی-کنترل-مجاز-روش ها: GET ، HEAD ، PUT ، PATCH ، POST ، DELETE
متغیر: دسترسی-کنترل-درخواست-هدرها
دسترسی-کنترل-اجازه-هدرها: نوع محتوا ، قبول
طول محتوا: 0
تاریخ: شنبه ، 16 نوامبر 2019 11:41:08 GMT + 1
اتصال: زنده نگه دارید

درخواست هدرها

در اینجا عناوینی وجود دارد که درخواست مشتری باید برای استفاده از مکانیزم CORS درج کند.

  • منبع: این نشانگر منشاء درخواست مشتری است. همانطور که قبلاً گفته شد هنگام کار با صفحات مقدماتی و باطن ، میزبان برنامه جلوی شما خواهد بود.
  • دسترسی-کنترل-درخواست-روش: از این درخواست در پیش پرواز استفاده می شود تا روش HTTP را نشان دهد که برای تهیه درخواست استفاده می شود.
  • دسترسی-کنترل-درخواست-هدرها: از این درخواست در پیش پرواز استفاده می شود تا هدرهای HTTP را برای استفاده از درخواست استفاده کند..

در اینجا نمونه ای از اینکه چگونه یک درخواست ظاهر خواهد شد ، آورده شده است

curl -i -X ​​OPTIONS localhost: 3001 / api \
-H ‘دسترسی-کنترل-درخواست-روش: دریافت’ \
-H ‘دسترسی-کنترل-درخواست-هدر: نوع محتوا ، قبول “\
-H ‘منبع: http: // localhost: 3000’

درخواستهای پرواز

https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS

پس از ذکر درخواست های پرواز قبل و پرواز در اینجا و آنجا ، چه می تواند معنی دهد?

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

هنگامی که یک درخواست پیش پرواز نیست ، به آن گفته می شود درخواست ساده.

پیاده سازی CORS

شما اکثراً می خواهید چیزهایی را در پس زمینه برنامه خود تنظیم کنید. اجرای آن به چارچوبی که استفاده می کنید بستگی دارد. برای این آموزش ، چگونگی انجام این کار را در NodeJS و Rails بررسی خواهیم کرد.

ریل

من توصیه می کنم از استفاده کنید قفسه های قفسه گوهر سپس باید این مورد را به پرونده پیکربندی / Application.rb خود اضافه کنید.

config.middleware.insert_before 0، Rack :: Cors do
اجازه انجام
مبدا ‘*’
منبع ‘*’,
هدر: هر,
افشای:٪ i (مشتری دسترسی به نوع توکن منقضی شده به علائم دسترسی),
روشها:٪ i (دریافت پست را در قسمت گزینه های حذف patch حذف کنید,
اعتبار: صحیح
پایان
پایان

NodeJS

در Node.js ، اینگونه به نظر می رسد.

app.all (‘* ‘، (req ، res، next) => {
res.header (“دسترسی-کنترل-اجازه-منبع” ، “*”)؛
res.header (“روشهای دسترسی-کنترل-مجاز” ، “قرار دادن ، گرفتن ، پست ، حذف ، صفحه ، گزینه های سر”)؛
res.header (“دسترسی-کنترل-اجازه-هدر” ، “*”)؛
res.header (“دسترسی-کنترل-اجازه-اعتبار” ، صحیح)؛
بعد()؛
})؛

در قطعه کد ، ما مبدا ، روشها ، هدرها و اعتبارهایی را تنظیم می کنیم که باید به منابع موجود در سرور ما دسترسی داشته باشند. شما همچنین می توانید پرداخت کنید اسکرین که یک ماژول هدر امنیتی را فراهم می کند تا با برنامه های Ruby ، ​​PHP ، Python ، Java ، Go ، Node.JS یکپارچه شود. و برای پیاده سازی در Apache یا Nginx به این راهنمای مراجعه کنید.

نتیجه

CORS این خط مشی را به گونه ای آرام می کند که مرورگر شما بتواند به منابعی که می خواهید دسترسی پیدا کند. دانستن آنچه در آن ضروری است ، چرا ضروری است ، و چگونگی تنظیم آن به درک مواردی که هنگام ساختن برنامه های وب خود می پردازید کمک می کند..

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map