首页 > 其他分享 >object原型-闭包“漏洞”

object原型-闭包“漏洞”

时间:2022-12-31 14:12:00浏览次数:38  
标签:闭包 function abc return get object 漏洞 var obj

如何在不修改下面代码的情况下,
修改obj

var o = (function () {
    var obj= {
        a: 'a1',
        b: 'b1'
    };
    return {
        get: function (key) {
            return obj[key]
        }
    }
})()
console.log(o.get('a')); // 'a1'

方法

Object.defineProperty(Object.prototype, 'abc', {
    get: function () {
        return this
    }
})
console.log(o.get('abc')); // { a: 'a1', b: 'b1' }
var obj2 = o.get('abc');
obj2.c = 'c1'
obj2.a = 'aaaaaaaa'
console.log(o.get('c')); // c1
console.log(o.get('a')); // aaaaaaaa
/* 这样闭包里的obj就被破坏了 */
那如何不被破环 方法一,判断hasOwnProperty对象自身属性,这个方法可以用来检测一个对象是否含有特定的自身属性;该方法会忽略掉那些从原型链上继承到的属性
var o = (function () {
    var obj= {
        a: 'a1',
        b: 'b1'
    };
    return {
        get: function (key) {
            if(obj.hasOwnProperty(key)) {
                return obj[key]
            } else {
                return undefined
            }
        }
    }
})()
Object.defineProperty(Object.prototype, 'abc', {
    get: function () {
        return this
    }
})
console.log(o.get('abc')); // undefind
方法二,setPrototypeOf
var o= (function () {
    var obj= {
        a: 'a1',
        b: 'b1'
    };
    Object.setPrototypeOf(obj, null)
    return {
        get: function (key) {
            return obj[key]
        }
    }
})()
Object.defineProperty(Object.prototype, 'abc', {
    get: function () {
        return this
    }
})
var obj2 = o.get('abc');
obj2.c = 'c1' // Cannot set properties of undefined
console.log(o.get('abc')); // undefined

 

标签:闭包,function,abc,return,get,object,漏洞,var,obj
From: https://www.cnblogs.com/webtown/p/17016597.html

相关文章

  • Python-codeobject
    普通函数的code本地存储情况deff():passprint(f.__code__)#<codeobjectfat0x0000018A7AC6F1B0,file"E:\zwx901323\test_position\easy.py",line1>print......
  • SerializedObject遍历
    # 数据类[Serializable]publicclassTest{publicfloatf;publicVector2v2;}[CreateAssetMenu]publicclassTestAsset:ScriptableObject{[......
  • kingdee漏洞金蝶EAS存在命令执行漏洞
     金蝶EAS基于云计算技术,为大型集团企业提供一体化、智能化的业务解决方案。一、kingdee漏洞分析 公开日期:2021-06-12 漏洞编号:CNVD-2021-34565 危害等级:高危 漏洞描述:......
  • 某微1day后台RCE审计漏洞
    某应用存在后台RCE,根据相关信息,我们在对后台审计过程,这里发现一处调用newInstance实例化溯源找到InterfaceRegisterCustomOperationCmd#excute访问路径为/api/integratio......
  • TypeError: ‘bool’ object is not iterable
    json_data={'success':True,'code':0,'message':None,'body':{'items':[],'pager':{'pageIndex':49,'pageSize':12,'total':0,'totalPage':0,......
  • 10-Mysql注入漏洞
    手工注入:get:url中带参数xxx.asp/asp?id=123123单引号and1=1/-0baidu.com/xxx.php?id=12312string=hasdfsdstring=网站asp/aspxaccess/sqlserverpost:搜索框、登录、注册、......
  • 聊聊闭包(Closures)
    /\/**\/****\/\/\/**\//\/\//\/\-......
  • JS中闭包的概念
    概要:Js中闭包的概念...个人理解:js中闭包的定义......
  • git“fatal: loose object”错误解决办法(未测试)
    先留着,回头测试https://blog.csdn.net/imfly/article/details/51857745?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%......
  • 5号黯区WEB靶场-注入漏洞-sql server get注入(sa)
    1手工注入1、判断是否有注入。加单引号发现有报错,存在报错注入。http://bug.cc:8201/get.aspx?id=1' and1=1显示正常, and1=2不显示数据,存在布尔型注入。http://b......