طريقة إعادة كتابة كائنات النوافذ ليست حداثة. على سبيل المثال ، قد نحتاج إلى تغيير سلوك التنبيه الافتراضي. كيف أعيد كتابتها بأمان؟
رأى Xiaocai أنه تم كتابة موقع معروف لتكنولوجيا المعلومات مثل هذا:
نسخة الكود كما يلي:
window.alert = function () {} ؛
أو
نسخة الكود كما يلي:
ALERT = function () {} ؛
في الواقع ، هذه الكتابة غير لائقة إلى حد ما. هذا يعادل إضافة سمة تنبيه إلى كائن النافذة. أولويته أعلى من التنبيه المدمج في النظام ، بحيث يمكنه تحقيق تأثير إعادة الكتابة ، ولكن من السهل اختراقها. إذا قمت بتنفيذ البيان التالي ، فستقوم باستعادة التنبيه.
نسخة الكود كما يلي:
حذف Window.Alert ؛
نظرًا لأن التنبيه الذي تم إعادة كتابته بهذه الطريقة هو مجرد سمة لكائن النافذة ويمكن حذفه من خلال مشغل الحذف.
كيف يمكن إعادة كتابتها بشكل دائم ولا رجعة فيها؟
فقط حدد متغير عالمي! على الرغم من أنه سيتم تسجيل المتغيرات العالمية أيضًا كخاصية لكائن نافذة ، إلا أنه لا يمكن حذفها وأنها موجودة بالفعل تمامًا. الرمز كما يلي:
نسخة الكود كما يلي:
var alert = function () {} ؛
لن تتم استعادة طريقة إعادة الكتابة هذه وستكون آمنة وموثوقة!