javascript 原型链污染

Posted cimuhuashuimu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript 原型链污染相关的知识,希望对你有一定的参考价值。

原理
javascript中构造函数就相当于类,并且可以将其实例化

②javascript的每一个函数都有一个prototype属性,用来指向该构造函数的原型
同样的javascript的每一个实例对象也有一个__proto__方法指向该实例对象的原型,并且例如:
function Cat()
    This.color=‘orange‘;

cat =new Cat();
console.log(Cat.prototype===cat.__proto__)
结果
True
可见实例的原型和构造函数的原型相等
并且每一个函数也有一个constructor属性指向其构造函数,也就是
Cat.prototype.constructor===Cat

③在javascript中Object是位于原型链的顶端,Object.prototype===null

④javascript的继承是基于原型链的,在原型链上的任何位置设置属性都能被其访问到,原型的作用也在此,
他可以包含所有实例共享的属性和方法,例如:
function Cat()
    this.color=‘orange‘;

Cat.prototype.getcolor=function()
    console.log(this.color)

cat =new Cat();
cat.getcolor();     //orange

在javascript中访问一个对象的属性可以用a.b.c或者a["b"]["c"]的方式来访问,由于对象是无序的,
当使用第二个方式访问对象时,只能使用指明下标去访问,因此我们可以通过a["__proto__"]方式访问
其原型对象,而如果修改了一个对象的原型,那么将影响所有和这个对象来自同一类、父祖类的对象,这就是原型链污染。

Demo

案例以后会补充

以上是关于javascript 原型链污染的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript原型链污染学习记录

Kibana漏洞之javascript原型链污染又文件包含漏洞的非常详细的分析的黑客教程

JavaScrip继承图文总结

JavaScript对象原型链继承闭包

JavaScript对象原型链继承和闭包

javascript继承