函数和"普通"1对象之间似乎有大约asymmetry/prototype pollution:

var a = {}
function foo(){}

a.__proto__.something = 32;
foo.__proto__.bar = 67;

console.log(a.bar) // <--- not polluted
console.log(foo.something) // <--- polluted
  • 该示例表明普通对象可能会污染函数
  • 反之亦然吗?(功能污染普通物体)

1术语不是共识(见here)

推荐答案

函数和"普通"对象之间似乎存在一些不对称

当然.普通对象继承自Object.prototype,但函数继承自Function.prototype,而Function.prototype又继承自Object.prototype.Object.prototype从无继承(null),而不是从Function.prototype继承.

有可能从功能对普通对象进行原型污染吗?

是的,你只需要链长一点:

var a = {}
function foo(){}

foo.__proto__.__proto__.bar = 42;
foo.prototype.__proto__.qux = 67;

console.log(a.bar) // <--- polluted
console.log(a.qux) // <--- polluted

Javascript相关问答推荐

单击树元素时阻止焦点事件触发?

TestCafe预计文本等于以下内容之一

v-textfield的规则找不到数据中声明的元素

为什么有些库公开了执行相同任务的方法,但每个方法都处于同步/同步上下文中?

为什么使用MAX_SAFE_INTEGER生成随机整数时数字分布不准确?

在JavaScript中,是否有一种方法可以创建自定义thable,在等待某些代码后自动触发它?

有什么(最佳)方法可以从模块中获取脚本模块的多姆元素吗?

我无法在NightWatch.js测试中获取完整的Chrome浏览器控制台日志(log)

使用AJX发送表单后,$_Post看起来为空

在vercel throws上部署带有gunjs的sveltekit应用无法找到模块./' lib/文本编码'

D3 Scale在v6中工作,但在v7中不工作

分层树视图

使用Promise.All并发解决时,每个promise 的线性时间增加?

基于props 类型的不同props ,根据来自接口的值扩展类型

警告框不显示包含HTML输入字段的总和

如何在和IF语句中使用||和&;&;?

如何为仅有数据可用的点显示X轴标签?

为列表中的项目设置动画

ReferenceError:无法在初始化之前访问setData

是否设置以JavaScript为背景的画布元素?