前言:
OWASP TOP10的第三位是XSS(跨站脚本攻击)
只有充分认识JS,才可能理解XSS
本文将回顾JS的基础部分
0x00 概述
Javascript(JS):一种轻量级直译式脚本语言
- 特点:解释型、基于对象、动态(事件驱动)、跨平台、弱类型、基于原型
- 其他特性:
严格区分大小写
执行环境为浏览器或Node.js
每个语句最后最好加上结束符;
注释与Java一致,单行//
,多行/**/
以<script></script>
内嵌于HTML中。可直接写在其中,或通过src属性引用独立的.js
文件 - 对JS的个人理解:客户端与用户在本地的交互和行为,常用于为HTML网页增加动态功能
0x01 变量
- 命名:
字母
开头,剩下可$
或_
或字母
;无法用保留字 - 数据类型:变量保存的数据的类型(个人理解是变量指向内存单元的地址,值为地址中的数据)
1.字符型(string)用
" "
或''
;
2.数字型(number)可整数可分数,可用带e
的科学计数法
3.空值(null)空值不是0,0不是空值。属于对象类型
4.无值(undefined)默认不赋值的变量为,其由null派生,故用==
可判断二者相等,但用===
即绝对等于时,二者不相等。
4.布尔型(boolean)
5.数组(Array)在[ ]
内以,
分隔每个数组内的元素。属于对象类型
6.对象(object)在{ }
内以键值对存在,以,
分隔每个键值对。除上述外,还包含Date
,Math
,Regexp
等
区分方法:typeof语句
可见object是一个大的类型,包含很多具体类型
- 声明:
var 变量名=变量值;
可结合,
将多个变量一句话声明
0x02 输入输出
常用的输出:
document.write()
表示 print
alert()
表示弹窗
在HTML的body标记中还可用按钮交互:
<button type="button" onclick="alert('显示内容')">按钮的文字</button>
这是最经典的交互之一
0x03 常见事件
通过文档对象模型(Document Object Model,DOM)。JavaScript 获得了足够的能力来创建动态的 HTML
- 鼠标单击:直接用事件属性
<button type="button" onclick="alert('显示内容')">按钮的文字</button>
或使用 HTML DOM 来分配事件
<script>document.getElementById("myBtn").onclick=function(){displayDate()};</script>
- 此外还有鼠标双击;鼠标悬停;鼠标移开;内容改变;获取焦点;失去焦点;页面加载;页面关闭等
0x04 判断
经典的判断:if ..
或 if ...else...
或 if ... else if ... else ...
0x05 循环
经典的 for 循环和 while 循环,只不过变量都是 var