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原型链污染
18年p师傅在知识星球出了一些代码审计题目,其中就有一道难度为hard的js题目(Thejs)为原型链污染攻击,而当时我因为太忙了(其实是太菜了,流下了没技术的泪水)并没有认真看过,后续在p师傅写出w ...
- redpwnctf-web-blueprint-javascript 原型链污染学习总结
前几天看了redpwn的一道web题,node.js的web,涉及知识点是javascript 原型链污染,以前没咋接触过js,并且这个洞貌似也比较新,因此记录一下学习过程 1.本机node.js环境 ...
- JavaScript原型链及其污染
JavaScript原型链及其污染 一.什么是原型链? 1.JavaScript中,我们如果要define一个类,需要以define"构造函数"的方式来define: functi ...
- JavaScript学习总结(十七)——Javascript原型链的原理
一.JavaScript原型链 ECMAScript中描述了原型链的概念,并将原型链作为实现继承的主要方法.其基本思想是利用原型让一个引用类型继承另一个引用类型的属性和方法.在JavaScript中, ...
- javascript原型链中 this 的指向
为了弄清楚Javascript原型链中的this指向问题,我写了个代码来测试: var d = { d: 40 }; var a = { x: 10, calculate: function (z) ...
- 明白JavaScript原型链和JavaScrip继承
原型链是JavaScript的基础性内容之一.其本质是JavaScript内部的设计逻辑. 首先看一组代码: <script type="text/javascript"&g ...
- Javascript 原型链资料收集
Javascript 原型链资料收集 先收集,后理解. 理解JavaScript的原型链和继承 https://blog.oyanglul.us/javascript/understand-proto ...
- 资料--JavaScript原型链
JavaScript原型链 原文出处:https://www.cnblogs.com/chengzp/p/prototype.html 目录 创建对象有几种方法 原型.构造函数.实例.原型链 inst ...
- JavaScript原型链:prototype与__proto__
title: 'JavaScript原型链:prototype与__proto__' toc: false date: 2018-09-04 11:16:54 主要看了这一篇,讲解的很清晰,最主要的一 ...
随机推荐
- MySQL之约束
目录 约束(CONSTRAINT) mysql中的约束有哪些? 级联操作 产生的原因: 两种级联的定义方式 约束(CONSTRAINT) 什么是约束? 是一种限制,对某一个东西的限制.例如宪法规定 ...
- Eclipse上将maven项目部署到tomcat,本地tomcat下,webapps下,web-inf下lib下没有jar包决绝方案
右键项目选择properties ,选择Deployment Assembly , 右边点击Add 然后选择 Java Build Path Entries ,,,next , 选择Mave ...
- CSS垂直居中的8种方法
CSS垂直居中的8种方法 1.通过verticle-align:middle实现CSS垂直居中. 通过vertical-align:middle实现CSS垂直居中是最常使用的方法,但是有一点需要格外注 ...
- 如何使用ffmpeg的c语言sdk实现对文件夹的操作
重要函数 打开文件夹:avio_open_dir() 读取文件夹:avio_read_dir() 关闭文件夹:avio_close_dir() 结构体, 操作目录的上下文:AVIODirContext ...
- cmd如何进入和退出Python编程环境?
cmd里面进入python编译环境的方式: 安装Python之后需直接运行: python 即可进入Python开发环境 退出Python编译环境主要有三种方式: 1:输入exit(),回车 2:输入 ...
- 记一次关于NVROM中遇到的“Could not prepare Boot variable:No space left on device”问题的解决历程
注:关于我电脑遇到的问题,不是一两句话能够说清楚的.为了能够比较完整的呈现问题的某些细节,在这篇博客中我会添加许多问题发生的背景,如果当中有观点与您的三观不合,请立即停止阅读,及时止损. 注:此篇文章 ...
- C. Magic Grid 构造矩阵
C. Magic Grid time limit per test 1 second memory limit per test 256 megabytes input standard input ...
- android sqlite 图片保存和读出 用流 转字节码
原文:http://blog.sina.com.cn/s/blog_8cfbb99201012oqn.html package com.yiyiweixiao; import android.cont ...
- SC.Lab3对于Factory的构建过程(from HIT)
Factory设计模式基本就是通过传入指定的参数/或者不传入参数,通过Factory的某个方法(为了避免实例化Factory对象,一般方法为静态static),来获取一个对象.这个是Factory用的 ...
- RabbitMq学习笔记——概念
1.RabbitMQ简介 MQ全称为Message Queue(消息队列),是一种“应用程序”<—>“应用程序”的通信方法.MQ是一个典型的“消费”<—>“生产者”模型的代表, ...