چگونه می توان CORS را در Apache و Nginx فعال کرد؟

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


سرصفحه CORS (Cross-Origin Resource Sharing) در تمامی مرورگرهای مدرن پشتیبانی می شود.

آیا می توانم از cors استفاده کنم? داده های پشتیبانی از ویژگی های cors در مرورگرهای اصلی caniuse.com.

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

شش سرصفحه سرور CORS وجود دارد که می تواند ارسال کند. بیایید آنها را بررسی کنیم.

دسترسی-کنترل-اجازه-مبدا

محبوب ترین موردی که به مرورگر می گوید منابع موجود در مبدا مجاز را بارگیری کند. این از wildcard (*) پشتیبانی می کند و با این کار هر دامنه می تواند منابع را بارگیری کند. با این حال ، این گزینه ای دارد که بتواند منشأ خاصی را فراهم کند.

آپاچی

موارد زیر را در httpd.conf یا هر پرونده پیکربندی مورد استفاده دیگری اضافه کنید.

تنظیم هدر Access-Control-Allow-Origin "*"

راه اندازی مجدد آپاچی برای آزمایش. باید آنها را در هدرهای پاسخ مشاهده کنید.

و برای اجازه دادن به یک منبع خاص (مثال: https://gf.dev) می توانید از موارد زیر استفاده کنید.

تنظیم هدر Access-Control-Allow-Origin "https://gf.dev"

نگینکس

در اینجا مثالی وجود دارد که اجازه می دهد منشاء https://geekflare.dev باشد. موارد زیر را در بلوک سرور nginx.conf یا پرونده پیکربندی استفاده شده اضافه کنید.

add_header Access-Control-Allow-Origin "https://geekflare.dev"؛

دسترسی-کنترل-مجاز-روش ها

مرورگر می تواند برای دسترسی به منابع یک یا چند روش HTTP را آغاز کند. مثال: – GET ، PUT ، گزینه ها ، PUT ، DELETE ، POST را انتخاب کنید

آپاچی

فقط برای GET و POST اجازه می دهد.

اضافه کردن هدر Access-Control-Allow-Methods "دریافت ، پست"

نگینکس

بیایید بگوییم که شما باید روش DELETE و OPTIONS را اضافه کنید ، می توانید به شکل زیر اضافه کنید.

add_header Access-Control-Allow-Methods "حذف ، گزینه ها"؛

پس از راه اندازی مجدد ، باید آنها را در قسمت های پاسخ مشاهده کنید.

دسترسی-کنترل-اجازه-هدر

عناوین زیر در فهرست قرار دارند به این معنی که نیازی به اضافه کردن آنها ندارید. باید بصورت پیش فرض کار کند.

  • نوع محتوا
  • تایید کنید
  • محتوا-زبان
  • پذیرش-زبان

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

آپاچی

بیایید بگوییم که شما می خواهید به هدر X-Custom-Head و X-Powered-By اجازه دهید.

هدر همیشه تنظیمات Access-Control-Allow-Head را تنظیم می کند "X-Custom-Header ، X-Powered-By"

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

نگینکس

نمونه ای از افزودن هدر X-Customer-Software و header X-My-Custom.

add_header Access-Control-Allow-Headers "نرم افزار X-Custom ، X-My-Custom"؛

دسترسی-کنترل-در معرض-هدرها

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

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

اما اگر به غیر از لیست امن نیاز دارید ، می توانید به شرح زیر اجازه دهید.

آپاچی

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

هدر همیشه تنظیمات Access-Control-Expos-Head را تنظیم می کند "*"

توجه: یک کارت ویزیت هنوز هدر مجوز را در معرض نمایش قرار نمی دهد ، و در صورت نیاز به یک مورد ، باید صریحاً ذکر کنید.

هدر همیشه تنظیمات Access-Control-Expos-Head را تنظیم می کند "مجوز ، *"

نتیجه باید به این شکل باشد.

نگینکس

اگر می خواهید هدر Origin را افشا کنید.

add_header Access-Control-Expos-Headers "اصل و نسب"؛

دسترسی-کنترل-حداکثر سن

آیا می دانید داده های مربوط به هدرهای Access-Control-Allow-Headers و Access-Control-Allow-Methods ذخیره می شوند؟ می توان آن را تا 24 ساعت در Firefox ، 2 ساعت در Chrome (76+) ذخیره کرد.

برای غیرفعال کردن حافظه پنهان ، می توانید مقدار را به عنوان -1 نگه دارید

آپاچی

برای کشیدن 15 دقیقه.

هدر همیشه Access-Control-Max-Age را تنظیم می کند "900"

همانطور که می بینید مقدار آن در ثانیه است.

نگینکس

برای ذخیره یک ساعت.

add_header Access-Control-Max-Age "3600"؛

پس از افزودن ، Nginx را دوباره راه اندازی کنید تا نتایج را ببینید.

دسترسی-کنترل-اجازه-اعتبار

فقط یک گزینه برای تنظیم اینجا وجود دارد – درست است. این امر به شما اجازه می دهد اگر می خواهید اعتباراتی مانند کوکی ها ، گواهینامه های TLS ، مجوز را افشا کنید.

آپاچی

هدر همیشه Access-Control-Allow-Credentials را تنظیم می کند "درست است، واقعی"

نگینکس

add_header Access-Control-Allow-Credentials "درست است، واقعی"؛

و نتیجه.

تأیید نتایج

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

نتیجه

امیدوارم موارد فوق به شما کمک کند تا هدر CORS را در Apache HTTP و سرور وب Nginx برای امنیت بهتر پیاده سازی کنید. همچنین ممکن است شما علاقه مند به استفاده از هدرهای امن توصیه شده OWASP باشید.

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