اشتراکگذاری منابع بین مبدا(CORS)
مکانیزمی امنیتی که تعیین میکند کدام دامنهها میتوانند از منابع یک وبسایت استفاده کنند.
CORS چیه؟
خلاصه در یه جمله: CORS تعیین میکنه کدوم سایتها میتونن از API یا منابع سایت تو استفاده کنن!
فرض کن یه کتابخونه داری. میتونی قانون بذاری که فقط اعضای کتابخونه میتونن کتاب قرض بگیرن، یا بگی هر کسی میتونه. CORS همینه — سایت تو میتونه بگه کدوم دامنهها میتونن از منابعش استفاده کنن.
چطور کار میکنه؟
وقتی سایت A میخواد از API سایت B استفاده کنه، مرورگر میپرسه از سایت B: "آیا اجازه میدی سایت A ازت استفاده کنه؟" سایت B با یه Header جواب میده:
1Access-Control-Allow-Origin: https://site-a.com
اگه این Header نباشه یا دامنه اشتباه باشه، مرورگر اجازه نمیده!
مشکلات CORS:
*Allow-Origin: : یعنی همه میتونن استفاده کنن! خطرناکه اگه دادههای حساس داری.
Reflection غلط: دامنهای که کاربر میفرسته رو بدون چک برمیگردونی. هکر دامنه خودش رو میفرسته، تو برمیگردونی، هکر دسترسی میگیره!
Credentials با Wildcard: <span dir="ltr">Access-Control-Allow-Credentials</span>: <span dir="ltr">true</span> با <span dir="ltr">Allow-Origin</span>: * ترکیب خطرناکیه!
چرا برای امنیت مهمه؟
چون CORS غلط میتونه منجر به دزدی داده، CSRF، یا دسترسی غیرمجاز به API بشه.