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 主要看了这一篇,讲解的很清晰,最主要的一 ...
随机推荐
- nginx的access的阶段的access模块、auth_basic模块、auth_request模块及satisfy指令介绍
access 模块 示例从上向下匹配 location / { deny 192.168.1.1; allow 192.168.1.0/24; allow 10.1.1.0/16; allow 200 ...
- tomcat启动报错failed to start component
严重: A child container failed during start java.util.concurrent.ExecutionException: org.apache.catali ...
- 从Uber司机只是合同工看,零工经济将受沉重打击?
Uber自诞生以来,就始终处于漩涡之中--与当地的同类平台斗.创始人出现负面新闻.司机不断抗议--而就在近日"流血上市"后,Uber也没能迎来好时光.反而是股价不断下跌,市值疯狂蒸 ...
- darknet简述
概述 darknet官网:https://pjreddie.com/darknet/ https://github.com/AlexeyAB/darknet Darknet是一个比较小众的深度学 ...
- 2_01_MSSQL课程_查询
查询 1.查询结果的别名 列 as 别名 (建议用这种) 列 别名 别名=列 Select sum(score1) as 成绩1,sum(score2)as 成绩2 from talScore 2. ...
- IDEA JSP中报错cannot resolve method println的解决方案
原因是没有导入Tomcat 库, 在 Project structure 添加
- stringstream常见用法介绍
1 概述 <sstream> 定义了三个类:istringstream.ostringstream 和 stringstream,分别用来进行流的输入.输出和输入输出操作.本文以 stri ...
- 三星 S10 运行 Ubuntu 系统
导读 DeX 是一种模仿桌面操作系统的用户 UI 界面,把支持 DeX 的三星手机用数据线连上外置显示器,用户就可以获得一种类似桌面系统的使用体验. 三星 S8.Note 8.S9.Note 9.S1 ...
- JS中的鼠标移入移除监控操作
有些时候我们需要通过页面来监控用户的行为,包括鼠标操作键盘操作,本文章介绍的是鼠标的操作监控: <script> window.onload = function(){ var oDiv ...
- LATTICE 编程烧录器HW-USBN-2B使用说明
HW-USBN-2B说明文档 1. 引脚定义 编程引脚 名称 编程设备引脚类型 描述 VCC 编程电压 输入 连接VCC到目标设备,典型的ICC=10Ma.板子设计必须考虑VCC的电流供应 ...