JavaScript原型链污染

本文介绍了JavaScript中的原型链污染安全漏洞,阐述了其概念,并详细讲解了JS对象的创建方式,包括类创建、字面量模式和构造函数模式。文章还探讨了默认属性,特别是`__proto__`、`constructor`和`prototype`的关系。最后,通过示例展示了如何利用合并函数实现原型链污染,并提出了解决方案——通过JSON解析避免污染。
摘要由CSDN通过智能技术生成

一、什么是原型链污染(JS)

原型链污染(Prototype Pollution)是一种安全漏洞,在 JavaScript 中可能会导致意外和不安全的行为。它利用了 JavaScript 中的原型继承机制,通过修改对象的原型链来污染或篡改目标对象的属性。

二、前置知识

2.1 JS对象

属性声明及调用格式如下

key:value //声明

classname.key //调用

方法声明及调用格式如下

methodname:function(){
   
	……
} //声明

classname.methodname()  //调用

2.11 通过类创建

类的声明与实例化和其他语言相似,如果不声明构造函数,则该函数仍存在但内容为NULL

class demo{
   
  constructor(name, age) {
   
    this.name = name;
    this.age = age;
  }
}
let person = new demo(ELITE,25);
// 访问对象的属性
console.log(person.name); // 输出:ELITE
console.log(person.age); // 输出: 25

2.12 字面量模式创建

JavaScript中对象的字面量模式定义类似于python中的字典,属性是键值对的组合,方法也以类似的形式定义示例如下

var person = {
   
	name
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Elitewa

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值