如何创建缺失属性返回对应属性名的JavaScript对象以混淆攻击者
实现方案
要让对象访问任何不存在的属性时返回属性名本身,可以使用JavaScript的Proxy对象拦截属性访问操作:
const myGlobal = new Proxy({}, { get(target, prop) { return prop.toString(); } }); console.log(myGlobal.apple); // 输出 "apple" console.log(myGlobal.javascript); // 输出 "javascript"
原理说明
Proxy会创建目标对象的代理,拦截并自定义它的基础操作(这里是属性访问行为)。- 定义的
get陷阱函数会在任何属性被访问时触发,参数prop就是当前访问的属性名,直接返回它就能实现需求。 - 该方案不仅适配示例中的两个属性,对任意未定义的属性都会返回属性名本身,能更全面地迷惑攻击者。
内容的提问来源于stack exchange,提问作者yuhanhan
相关产品推荐
相关产品推荐

