js

实际操作文件上传漏洞-upload-labs

倾然丶 夕夏残阳落幕 提交于 2020-02-24 02:54:57
文件上传之前端js绕过。 第一种方法: 首先在网站找到上传点。 上传文件为 phpinfo.php其中代码为: 点击上传 这时候查看F12查看源代码 我们会发现有一个事件我们去搜索查看一下这个checkFile()函数 我们可以直接删除这个事件然后进行上传 再进行上传文件 上传成功,然后右键图片,选择复制图像地址,打开另外一个标签页 第二种方法: 先使用正常后缀名.jpg过了前端,然后使用burp进行抓包,把后缀名.jpg改成.php,然后发送服务器端即可。 来源: https://www.cnblogs.com/mrlpl/p/12355348.html

js绑定事件

一世执手 提交于 2020-02-24 02:13:23
在JavaScript中,常用的绑定事件的方法: 内联模式,在DOM元素中直接绑定。 外联(脚本)模式,在JavaScript代码中绑定。 绑定事件监听器。`` 1、内联模式,就是把事件绑定直接写在DOM内 function btnClick ( ) { alert( "内联模式" ); //当点击按钮后会去执行字符串中的代码 } < button onclick = "btnClick();" > 内联模式 < / button > 2、外联模式,在javascript代码中绑定 window . onload = function ( ) { var oBtn = document . getElementById ( "btn" ) ; oBtn . onclick = function ( ) { alert ( "外联模式" ) ; } } < button id = 'btn' > 外联模式 < / button > 3、绑定事件监听器 事件监听器(低版本IE浏览器不支持) addEventListener 格式: 元素节点.addEventListener() 参数: 第一参数:绑定的事件类型 click mouseover 第二参数:绑定的函数 函数名/匿名函数 第三参数:默认是false (事件冒泡(false) 事件捕获(true)) /

video.js

Deadly 提交于 2020-02-24 01:54:41
video.js 是一款基于HTML5的自定义样式网络视频播放器,会在video标签基础上新增一些自定义样式和一些小功能,此外它还会自动检测浏览器对HTML5的支持情况,如果不支持HTML5则使用Flash播放器。 1 首先现引入 video-js.css 和 video.min.js   video-js.css .video-js .vjs-big-play-button .vjs-icon-placeholder:before,.video-js .vjs-modal-dialog,.vjs-button>.vjs-icon-placeholder:before,.vjs-modal-dialog .vjs-modal-dialog-content{position:absolute;top:0;left:0;width:100%;height:100%}.video-js .vjs-big-play-button .vjs-icon-placeholder:before,.vjs-button>.vjs-icon-placeholder:before{text-align:center}@font-face{font-family:VideoJS;src:url(../font/2.0.0/VideoJS.eot?#iefix) format("eot")}@font

了解js设计模式

随声附和 提交于 2020-02-24 01:02:20
什么是设计模式? 针对 特定问题 , 给出的简洁而优化的处理方案 一个设计模式 A 只能解决 A 类型的问题 针对 B 类型的问题, 设计模式 A 解决不了 同一个问题, 再不同的位置, 是不一定能用同一种方案解决 设计模式, 只在特定的情况, 特定的时期, 针对特定的问题使用 市场上常见的设计模式 单例模式 组合模式 观察者模式 适配器模式 代理模式 工厂模式 构建模式 单例模式 单: 单一, 一个, 独个 例: 实例(构造函数的实例化对象) 让一个构造函数一辈子只有一个实例对象 当你需要一个构造函数一生只能 new 出一个对象的时候 就可以使用单例模式. 单例模式的简单应用: 弹出层 alert() 比较丑, 用户体验极度不好 好多网站会使用一个自己写的 div 盒子, 当作弹出层 再自己写的过程中, 一个网站不可能只弹出一次 创造 div 并显示出来的构造函数 用代码来表示 组合模式 组合模式: 举例: 当你回家的时候, 你一打开门家里的所有东西就启动了, 灯会亮起来, 电视打开了, 空调打开了, 窗帘拉开了, … 组合模式: 把我们若干这启动方式一样的构造函数放在一起准备一个总开关, 总开关一启动, 那么这些个构造函数就都启动了 实现组合模式: 需要一个承载所有构造函数实例的数组 需要一个方法, 向数组里面添加内容 需要一个方法, 能把数组里面的所有内容启动了 应用场景

JS常用的三种设计模式

拈花ヽ惹草 提交于 2020-02-24 01:01:16
1.单例模式 保证一个类仅有一个实例,并提供一个访问它的全局访问点。– 百度百科 单例模式是一种常用的模式,有一些对象我们往往只需要一个, 比如线程池、全局缓存、浏览器中的window对象等。在JavaScript开发中,单例模式的用途同样非常广泛。试想一下,当我们单击登录按钮的时候,页面中会出现一个登录浮窗,而这个登录浮窗是唯一的, 无论单击多少次登录按钮,这个浮窗都只会被创建一次, 那么这个登录浮窗就适合用单例模式来创建。 下面是单例模式的 核心代码 : // 准备一个构造函数 // 将来要 new 的 function Person ( ) { } // 准备一个单例模式函数 // 这个单例模式函数要把 Person 做成一个单例模式 // 将来再想要 new Person 的时候只要执行这个 singleton 函数就可以了 function singleton ( ) { let instance if ( ! instance ) { //如果 instance 没有内容 //来到这里,证明 instance 没有内容 //给他赋值为 new Person instance = new Person ( ) } //返回的永远都是第一次 new Person 的实例 //也就是永远都是一个实例 return instance } const p1 = singleton

JS 逻辑运算符&&与||的运算

你。 提交于 2020-02-24 00:30:16
下面代码的输出值是? alert(1&&2); 正确的结果是 2. 下面是逻辑运算符的说明: 运算符 示例 说明 逻辑与 ( && ) expr1 && expr2 如果 expr1 能转换成false则返回expr1,否则返回expr2. 因此, 在Boolean环境中使用时, 两个操作结果都为true时返回true,否则返回false. 逻辑或 ( || ) expr1 || expr2 如果expr1能转换成true则返回expr1,否则返回expr2. 因此,在boolean环境(在if的条件判断中)中使用时, 二者操作结果中只要有一个为true,返回true;二者操作结果都为false时返回false. 逻辑非( ! ) ! expr 如果单个表达式能转换为true的话返回false,否则返回true. #简介的说就是 【&&返回第一个false,否则结束后返回true】【||返回第一个true,否则结束返回false】【!返回相反】# 能够转换为false的表达式有【 false 、""(空字符串)、0、NaN、null、undefined 】 能够转化为true的值为【 true、任何非空字符串、任何非零数字值(包括无穷大)、任何对象 】 以上规则已经再次确认,摘自"javascript高级程序设计(第3版)"这本书 也就是说在代码中,第一个值为1,类型是number

用Js写的贪吃蛇游戏

核能气质少年 提交于 2020-02-23 19:11:41
<!doctype html > < html > < head > < title >snake </ title > < script > function Snake(canvas){ this.canvas = canvas; this.length = 0; this.direction = 'down'; this.body = [], this.head = function(){ return this.length == 0 ? null : this.body[0]; }; this.isAlive = true; this.onDie = null; this.onEat = null; this.speed = 200; this.auto = null; this.turnLeft = function(){ if( this.direction == 'left' || this.direction == 'right'){ return; }else{ this.direction = 'left'; } }; this.turnRight = function(){ if( this.direction == 'left' || this.direction == 'right'){ return; }else{ this.direction =

JavaScript基础语法

喜夏-厌秋 提交于 2020-02-23 19:11:12
【使用JS的三种方式】 1、在html标签中,直接使用JS(并不提倡使用): 栗子:<button onclick="alert('我好啊')">点本宝宝</button> 不符合内容与行为分离的要求! 2、在html页面中使用<script></script>包裹JS代码: 栗子:<script type="text/javascript"> JS代码; </script> script标签可以放到页面的任何位置。 3、引入外部的JS文件 <script language="JavaScript" src="JS/01.js" ></script> 【注意事项】 1、<script></script>可以嵌入页面的任意位置。但是,位置的不同会导致JS代码的执行顺序不同; 比如:<script></script>放到<body></body>前面,则JS代码会在页面加载之前执行。 2、引入外部的JS,<script></script>必须是成对出现的标签。而且,标签中不能有任何JS代码。 JS中多行注释。ctrl+shift+/ JS中单行注释。ctrl+/ 【JS中变量】 1、JS中变量申明的写法: var num=1;//使用var申明的变量,属于局部变量,只在当前作用域有效; num=1;//不用var申明的变量,默认为全局变量,在整个JS文件中有效。 var x=1,y=2

js视角的数据结构和算法(三)

倖福魔咒の 提交于 2020-02-23 18:22:36
js视角的数据结构和算法(三) 栈 队列 栈和队列的应用 树 二叉树 二叉树的实现 二叉搜索树/二叉查找树/二叉排序树 二叉树的遍历 栈 栈是逻辑结构中线性结构中的一种,遵循先入后出的原则。 最先入栈的元素称为栈底元素,最后入栈的元素称为栈顶元素。 栈属于逻辑结构,需要依托物理结构而存在。通过数组和链表,都可以实现一个栈。 栈基本操作是入栈和出栈,只从某一侧进行入或出,不论是链表实现还是数组实现,时间复杂度都是O(1)。 //入栈 var arr = [ 1 , 2 , 3 , 4 ] arr . push ( 5 ) //出栈 var arr = [ 1 , 2 , 3 , 4 ] arr . pop ( ) 队列 队列也是逻辑结构中线性结构中的一种,遵循先入先出的原则。 队列就像排队一样,有队头(出口)和队尾(入口)。 队列基本操作是入队和出队,只从某一侧进行入或出,不论是链表实现还是数组实现,时间复杂度都是O(1)。 //入队 var arr = [ 1 , 2 , 3 , 4 ] arr . push ( 5 ) //出队 var arr = [ 1 , 2 , 3 , 4 ] arr . shift ( ) 栈和队列的应用 先入后出的栈和先入先出的队列在特点上决定了它们的不同应用场景。 栈可用于历史数据的获取,是一种回溯,也能用于将递归操作转换成基于栈的非递归。

JS基础——数据类型

跟風遠走 提交于 2020-02-23 17:10:43
前言 JavaScript 是弱类型语言 ,而且 JavaScript 声明变量的时候并没有预先确定的类型, 变量的类型就是其值的类型,也就是说变量当前的类型由其值所决定,夸张点说上一秒种的 String, 下一秒可能就是个 Number 类型了,这个过程可能就进行了某些操作发生了强制类型转换 js 数据分为两种类型:原始数据类型和引用数据类型。 基本数据类型有:string、number、boolean、undefined、null 和 symbol(符号) 引用数据类型有:Object、Function、Date、RegExp 等。 基本数据类型的特点 基本数据类型是按值访问的,就是说我们可以操作保存在变量中的实际的值; 基本数据类型的值是不可变的,任何方法都无法改变一个基本数据类型的值 let name = 'zhangsan' name.substr() console.log(name) // 输出:zhangsan let age = 'firstblood' age.toUpperCase() console.log(age) // 输出:firstblood substr()和 toUpperCase()方法后返回的是一个新的字符串,跟原来定义的变量 name 并没有什么关系。 3.基本数据类型的赋值是简单的赋值(不影响原变量的值) let a = 18 let b