چرا API فیس بوک با حلقه for شروع میشه!

اگه شما درخواست هاتون به API های شرکت های بزرگ رو توی مرورگرتون بررسی کنید، شاید مطلع بشید که چند تیکه کد عجیب و غریب قبل JSON باشه،

نمونه facebook
نمونه facebook
نمونه gmail
نمونه gmail

خب، واسه چی این چند بایت هدر میره؟


برای حفاظت از داده های شما 😄

بدون اون تیکه کد های مهم، این مهم برای هر وبسایتی ممکن میشه که به این داده ها دسترسی داشته باشن!

این آسیب پذیری اسمش JSON hijacking هستش، و به وبسایت ها اجازه میده که اطلاعات JSON رو از API مدنظر استخراج کنن و ازش استفاده کنن!




ریشه ها 🌱

توی جاوااسکریپت 1.5 و نسخه های قبلیش، این قابلیت وجود داشت که سازنده های اصلی اشیا رو باطل کرد(ویرایش/override)، یعنی اون عمل اصلی رو منسوخ کنیم و یه عمل دیگه رو جایگزین کنیم!، و وقتی اون ورژن ویرایش شده رو با نشانه های برکت فرابخونیم، این دوتا علامت رو میگم: []

به این معنی که میتونستید:

function Array(){
    alert( 'شما یک آرایه ساختید' );
}
var x = [1, 2, 3];

و الرت ها نمایان میشدن!!!

حالا var x رو با اسکریپت زیر جایگزین کنید، و حالا کسی ک داره حمله میکنه، میتونه ایمیل های شمارو بخونهههههههه!

این درصورتی کار میکنه که سازنده(تابع اصلی سازنده) Array قبل از لود شدن اسکریپت خارجی، منسوخ یا ویرایش بشه!

<script src="https://gmail.com/messages"></script>



این مطلب بطور کامل با زبان انگلیسی توی لینک زیر موجوده، حتما بخونیدش!

لینک dev.to