首页 > 其他分享 >闭包的漏洞

闭包的漏洞

时间:2024-02-06 11:36:30浏览次数:23  
标签:闭包 function obj 函数 get 漏洞 return

目录

1. 闭包的定义

  • 闭包就是能够读取其他函数内部变量的函数。在JavaScript中,只有函数内部的子函数才能读取局部变量,所以闭包可以理解成“定义在一个函数内部的函数“。本质上,闭包是将函数内部和函数外部连接起来的桥梁。

2. 构成闭包的条件

  1. 在函数A内部直接或间接返回一个函数B
  2. 函数B内部使用函数A的私有变量
  3. 函数A外部有一个变量接收函数B

下面是一个典型的闭包场景

function a(){
    var num = 100
    return (function b(){
        console.log(num);
    })()
}
a() // 100

3. 闭包的漏洞

  • 定义:在不改变闭包的情况下修改闭包里面的私有变量

下面是一个闭包漏洞的例子

 var o = (function (){
   var obj = {
       a: 1,
       b: 2,
   }
   return{
       get: function(k){
           return obj[k]
       }
   }
})()

下面是闭包漏洞的实现方法

// 在全局Object对象中添加add属性,返回的是this
// 作用是返回当前调用Object对象原型链add属性的对象
Object.defineProperty(Object.prototype, 'add', {
  get(){
    return this
  }
})
console.log(o.get('add')); // { a: 1, b: 2 }
// o.get('add')即可获取obj对象
// 原理是obj对象读取Object对象原型链上的add属性
o.get('add').a = '海绵宝宝' // 修改obj对象的a属性
// 验证a属性被修改成功
console.log(o.get('a')); // 派大星

4. 闭包的漏洞防止方法

4.1 判断法

var o = (function (){
  var obj = {
    a: 1,
    b: 2,
  }
  return{
    get: function(k){
      // 判断obj对象是否有属于它对应的属性
      if(obj.hasOwnProperty(k)){ 
        return obj[k]
      }
      // 不是obj对象本身的属性就返回undefined
      return undefined
    }
  }
})()

4.2 置空法

var o = (function (){
  var obj = {
    a: 1,
    b: 2,
  }
  // 把obj对象在Object原型链上置为null
  Object.setPrototypeOf(obj, null)
  return{
    get: function(k){
        return obj[k]
    }
  }
})()

标签:闭包,function,obj,函数,get,漏洞,return
From: https://www.cnblogs.com/wjy-javascript/p/18009432

相关文章

  • ArcgisServer屏蔽服务访问页面等安全漏洞
    1信息遍历通过ArcgisServer自身配置进行设置。本机测试通过。1.1配置步骤打开如下地址http://ip:6080/arcgis/admin/system/handlers/rest/servicesdirectory点击edit,将ServicesDirectoryEnabled的勾选去掉,保存。 1.2设置后效果 2不安全的域传送漏洞删除Arcgis......
  • 反序列化漏洞
    反序列化漏洞什么是序列化、反序列化例子引入序列化是将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,对象将当前状态写入到临时或持久性存储区。以后,可以通过从存储区中读取或反序列化对象状态,重新创建该对象。简单的来讲:(含例子easy.php)序列化:把对象转换......
  • RCE代码执行漏和命令漏洞
    前置知识:漏洞检测:在了解漏洞概念前,应该先知道一下这个漏洞如何检测的,我们应该或多或少听过白盒测试(白盒),黑盒测试(黑盒)。白盒测试:白盒测试是对源代码和内部结构的测试,测试人员是可以知道内部的逻辑和结构的,差不多就是代码审计。黑盒测试:黑盒测试是对功能需求的测试,测试人......
  • 解析与编辑器漏洞
    一、解析漏洞需要vulhub环境。点击查看代码编译:sudodocker-composebuild启动:sudodocker-composeup-d关闭:sudodocker-composedown1、IIS6vulhub里面没有IIS的靶场,可以用课程资料的03serverr1版本,用户名密码:administrator/123456。解析漏洞介绍1)当建立.asa......
  • 汽车网络安全,防止汽车软件中的漏洞
    喜欢本篇文章的话记得点赞评论⭐收藏 汽车网络安全在汽车开发中至关重要,尤其是在汽车软件日益互联的情况下。在这篇博客中,我们将分享如何防止汽车网络安全漏洞。 Jumpto你喜欢的部分 为什么汽车网络安全很重要?主要汽车网络安全漏洞内存缓冲区问题代码注入顶级汽车......
  • 云小课|Runc容器逃逸漏洞(CVE-2024-21626)安全风险通告
    阅识风云是华为云信息大咖,擅长将复杂信息多元化呈现,其出品的一张图(云图说)、深入浅出的博文(云小课)或短视频(云视厅)总有一款能让您快速上手华为云。更多精彩内容请单击此处。runc官方发布安全公告,披露runc1.1.11及更早版本中存在容器逃逸漏洞,攻击者会利用该漏洞导致容器逃逸......
  • Jenkins任意文件读取漏洞修复
    漏洞描述【高】JenkinsCLI任意文件读取漏洞导致远程代码执行风险JenkinsCLI是Jenkins内置的命令行页面。Jenkins受影响版本中使用args4j库解析CLI命令参数,该库默认将参数中@字符后的文件路径替换为文件内容,攻击者可利用该特性使用Jenkins控制器进程的默认字符编码......
  • Nexpose v6.6.236 for Linux & Windows - 漏洞扫描
    Nexposev6.6.236forLinux&Windows-漏洞扫描Rapid7VulnerabilityManagement,ReleaseFeb02,2024请访问原文链接:https://sysin.org/blog/nexpose-6/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.org您的本地漏洞扫描程序搜集通过实时覆盖整个网络,随......
  • 网络安全之漏洞扫描
    漏洞是在硬件、软件、协议的具体实现或系统安全策略上存在的缺陷,从而可以使攻击者能够在未授权的情况下访问或破坏系统。这些缺陷、错误或不合理之处可能被有意或无意地利用,从而对一个组织的资产或运行造成不利影响,如信息系统被攻击或控制,重要资料被窃取,用户数据被篡改,系统被作为入......
  • 未授权访问漏洞
    未授权访问漏洞是一个在企业内部非常常见的问题,未授权访问可以理解为需要安全配置或权限认证的地址、授权页面存在缺陷,导致其他用户可以直接访问,从而引发重要权限可被操作、数据库、网站目录等敏感信息泄露。 未授权访问漏洞总览:1、FTP未授权访问(21)2、LDAP未授权访问(389......