首页 > 其他分享 >原型链污染

原型链污染

时间:2024-11-25 19:57:24浏览次数:5  
标签:__ proto 对象 number 污染 原型 属性

1.什么是原型链污染

原型链污染是JavaScript中的一种安全漏洞,它利用了JavaScript的原型继承机制。在JavaScript中,对象通过原型链继承属性和方法。如果攻击者能够修改对象的原型,那么所有从该原型继承的对象都可能受到影响,这就是原型链污染。

2.原型链污染的原理

在JavaScript中,每个对象都有一个名为__proto__的属性,它指向该对象的原型。原型对象本身也可能有原型,形成一个原型链。当访问对象的属性或方法时,如果该对象本身没有该属性或方法,JavaScript引擎会沿着原型链向上查找,直到找到为止。如果在原型链上插入恶意代码,那么所有通过这个原型链查找属性或方法的对象都可能执行这些恶意代码。

在原型链污染中离不开__proto__prototype

__proto__和prototype

JavaScript中,每个对象都有一个名为__proto__的内置属性,它指向该对象的原型。同时,每个函数也都有一个名为 prototype 的属性,它是一个对象,包含构造函数的原型对象应该具有的属性和方法。简单来说,__proto__ 属性是指向该对象的原型,而 prototype属性是用于创建该对象的构造函数的原型。

1、prototype是一个类的属性,所有类对象在实例化的时候将会拥有prototype中的属性和方法
2、一个对象的__proto__属性,指向这个对象所在的类的prototype属性
关系图如下所示

 3.原型链污染的实施

举一个例子

var a = {number : 520}
var b = {number : 1314}
b.__proto__.number=520 
var c= {}
c.number

  在这个例子中先创建了两个对象:a和b,并对这两个对象的键number进行赋值。
       然后通过实例对象b,利用__proto__对原型进行修改,将键赋值为520。(这个修改并不会影响a和b的键的值)
        我们在创建一个新的对象c,但并不对c进行初始化。但在查询c.number的值时,我们能得到.number=520

原因:

1、在b对象中寻找number属性
2、当在b对象中没有找到时,它会在b.__proto__中寻找number属性
3、如果仍未找到,此时会去b.__proto__.__proto__中寻找number属性

  因此在查询b.number时,在对象b中直接找到了number属性,得到了b.number=1314
       而后在查询c.number时,由于对象c中没有number属性,会再次进入c.__proto__中寻找number属性。而b.__proto__和c.__proto__是一样的,都是实例原型,因此c.__proto__=520

实战

攻防世界-wife_wife

 参考文章:浅析CTF中的Node.js原型链污染 - FreeBuf网络安全行业门户

标签:__,proto,对象,number,污染,原型,属性
From: https://www.cnblogs.com/bwcen/p/18568478

相关文章

  • 05 设计模式-创造型模式-原型模式
    原型模式(PrototypePattern)是用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式之一。这种模式是实现了一个原型接口,该接口用于创建当前对象的克隆。当直接创建对象的代价比较大时,则采用这种模式。例如,一个对象需要在......
  • 前端原型链:探索 JavaScript 中的继承奥秘
    一、引言在前端开发领域,JavaScript是一门广泛应用的编程语言。而原型链作为JavaScript中一个重要的概念,对于理解JavaScript的面向对象特性和实现继承机制起着关键作用。它不仅影响着代码的组织和复用方式,还决定了对象之间的关系和属性访问规则。本文将深入探讨前端原型链......
  • 2000-2023年上市公司行业异质性数据(东中西、劳动密集型、技术密集型、资本密集型、高
    2000-2023年上市公司行业异质性数据(东中西、劳动密集型、技术密集型、资本密集型、高科技重污染分组)1、时间:2000-2023年2、指标:证券代码、年份、股票简称、行业代码、行业名称、是否stpt、是否金融、是否制造业、是否深证上市、是否上证上市、是否沪深上市、是否北证上市、是......
  • ERP&MES生产制造管理综合系统原型 Axure原型 交互设计 Axure实战项目
    ERP&MES生产制造管理综合系统原型图PC端综合管理系统+移动端工单小程序ERP&MES生产制造管理综合系统原型图是用于系统的功能和界面进行可视化展示的原型设计图,本作品原型图通过图形和交互元素的方式,呈现出系统界面的布局、功能和操作流程。通过原型图,可以直观地展示系统的整......
  • 智慧设备管理综合系统移动端原型图 Axure原型 交互设计 Axure实战项目
    智慧设备管理综合系统原型图移动端SmartDeviceManagementIntegratedSystemPrototype智慧设备管理综合系统原型图是一种用于展示移动端设备管理系统界面设计的设计示意图,本作品原型图通过图形和交互元素的方式,呈现出移动端界面的布局、功能和操作流程。通过原型图,可以直......
  • 011-关于复杂业务接口产生的Bo类字段污染的思考
    @RequestParam(value="xxx",required=false)这种参数接收模式,可以在一个接口接收平行的多个字段,更为灵活。1publicBaseResponseInfogetDetailList(@RequestParam("xxx0")Longxxx0,2@RequestParam("xxx1")Stringxxx1......
  • 智能工厂的软件设计 创新型原始制造商(“创新工厂“)的Creator原型(统一行为理论)之4
    Q30、再说一次。智能工厂的软件设计"Program"语言中用首字母大写的方法名表示一个的占位符变量(相当于普通程序中元编码标识,在这里代表用符号学标记sign唯一标识的一个Event签名)。最初为抽象类Event设计了三个抽象接口方法(创新的Creator(),建树的Builder()和构链Constructor......
  • 微信答题小程序产品研发-需求分析与原型设计
    欲知应候何时节,六月初迎大暑风。我前面说过,我决意仿一款答题小程序,所以我做了大量的调研。题库软件产品开发不仅仅是写代码这一环,它包含从需求调研、分析与构思、设计到开发、测试再到部署上线一系列复杂过程。需求分析是对产品定位的进一步细化。在这一阶段,需要通过深入的市场调研......
  • Axure大屏可视化模板:跨领域数据分析平台原型案例
    随着信息技术的飞速发展,数据可视化已成为各行各业提升管理效率、优化决策过程的重要手段。Axure作为一款强大的原型设计工具,其大屏可视化模板在农业、园区、城市、企业数据可视化、医疗等多个领域得到了广泛应用。本文将通过几个具体案例,展示Axure大屏可视化模板在不同领域中的......
  • 原型模式
    原型模式原型模式(PrototypePattern)是一种创建型设计模式,其主要目的是通过复制现有的对象来创建新的对象,而不是通过构造函数进行实例化。这个模式的核心思想是“克隆”现有对象,以获得新的实例,尤其是在创建成本较高的情况下非常有用。原型模式通常涉及以下几个角色:原型(Prototyp......