صفحة حساب الغربان خاصة بكل مستخدم لكنها تعاد بترويسة Cache-Control public فيخزنها كاش مشترك وتسلم للزائر التالي فإذا فتحت admin حسابها ثم جلبت أنت نفس المسار وصلتك بياناتها
صفحة فيها زر يجعل admin تفتح حسابها وزر يجلب أنت نفس المسار الحساب يعاد بـ Cache-Control public فيخزنه الكاش المشترك ويسلمه لأي طالب
لماذا نجح الحل
صفحة خاصة بترويسة تخزين عامة يخزنها أي كاش وسيط ويسلمها لمستخدم آخر الحل Cache-Control private و no-store على كل رد يحوي بيانات خاصة أو مصادقا عليه
السبب الجذري
ترويسة تخزين عامة على رد خاص الجذر ضبط تخزين خاطئ للمحتوى المصادق عليه
كيف يصلح الكود
استخدم private و no-store لكل رد يحوي بيانات خاصة أو مصادقا عليه
الكود المصاب
res.setHeader('Cache-Control', 'public, max-age=60'); // on a per-user page
الكود الآمن
res.setHeader('Cache-Control', 'private, no-store'); // authenticated, per-user data
الأثر في الواقع
تخزين الصفحات الخاصة عاما يسرب بيانات المستخدمين لبعضهم عبر الكاش المشترك CDN أو وكيل
كيف يكتشفها المدافعون
المدافع يفرض no-store على الردود المصادق عليها ويرصد ترويسات تخزين عامة على محتوى خاص