1、反射型XSS
发出请求时,XSS代码出现在URL中,作为输入提交到服务器端,服务器端解析后响应,XSS代码随响应内容一起传回给浏览器,最后浏览器解析执行XSS代码。这个过程像一次反射,故叫反射型XSS。
浏览器——>服务端、服务端——>浏览器
所以反射性的XSS是不会被储存的,他就像是应付公事一样,在运行结束之后直接结束之前进行过的操作
如果一个的代码就像这样
用这个代码直接测试一波看输入的x有没有经过过滤,要是没有就直接上传提交
?x=
函数就会直接触发
2、存储型XSS
存储型XSS和反射型XSS的差别仅在于,提交的代码会存储在服务器端(数据库,内存,文件系统等)。所以说储存型的 代码可以在被访问的时候一直不断的触发当做正常的HTML与Js解析执行,于是触发了XSS攻击。
DOM XSS
DOM XSS和反射型XSS、存储型XSS的差别在于DOM XSS的代码并不需要服务器参与,触发XSS靠的是浏览器端的DOM解析,完全是客户端的事情。也就是说他依靠的仅仅是自身浏览器对于数据或者代码的相应执行机制
锚点。得到的是url中#部分。
由于hash能够获取到url的锚部分,而且锚部分不会被上传到服务器,所以在上述部分进入后,使用者可以构造很长的代码来执行让攻击语句执行
substr()
返回一个从指定位置开始的指定长度的子字符串
这里设置为1,是为了把url中的?号去掉
document.URL
document.URLUnencoded
document.location
document.referrer
window.location
window.name