最近正在学习关于xss的一些知识,作为一个前端开发者,这个知识也是基础的,以前也没怎么好好学习与总结,深感惭愧,接下来的几天时间好好补习下。
xss是什么
xss的全称是Cross Site Scripting,即跨站脚本。攻击者通过向要攻击的网站中插入一些恶意html,或者js代码,来达到攻击这个网站的其他用户的目的。
xss具体是怎样的
解释太抽象,我要来点案例
下面的一个例子来自这里,借用一下大神的例子,传送门
1.看下面这个表单,它的功能是在输入框中输入一些内容,点提交后,下方会显示你刚才的输入
比如输入abcd123,就显示成这样了,
因为你的输入比较正规,所以没什么问题,那如果你输入一些邪恶的呢,比如说下面这个
那就执行了一段脚本了,这里是一个弹出框,只是用来说明这个脚本执行了,实际攻击中并不是这样用的,因为弹个框没意义,哈哈。但如果这里不是弹出框而是获取cookie呢,如果这段内容还可以被其他用户看到的话,那就可以得到其他用户的cookie了,可以利用这个cookie去登录其他用户的账号,可以看到不该看的,想想就有点小激动有没有。
xss居然还有分类
听说xss分为反射型XSS,储蓄型XSS,DOM XSS,哎哟有三种啊,他们都是什么鬼啊,应该要细细讲来。
反射型XSS
原理是这样的:
Hacker——发现存在反射XSS的URL——根据输出点的环境构造XSS代码——进行编码、缩短(可有可无,是为了增加迷惑性)——发送给受害人——受害打开后,执行XSS代码——完成hacker想要的功能(获取cookies、url、浏览器信息、IP等等)
解释来自于这篇文章,传送门
这里可以看出是通过修改url的方式,因为url的参数可能在页面中用到,那我们就可以在参数中加一些恶意代码,当受害人访问这个链接的时候,这个恶意代码就执行了,当然首先要把这个url发给受害人。
储蓄型XSS
储蓄型也叫持久型,什么情况下才能持久呢,那就是被保存到数据库中了,或者说被后端保存起来了。
原理应该是这样的:
Hacker——发现存在储蓄型XSS的表单或者能保存到后端的地方——根据输出点的环境构造XSS代码——受害人访问这个输出点,执行了XSS代码——完成hacker想要的功能(获取cookies、url、浏览器信息、IP等等)
比如说有一个留言板,大家都可以留言,可以想到这个留言是要保存到后端的,如果这个留言板有xss漏洞的话,我们发表一些恶意代码,然后恶意代码就被保存到服务器上了,当别人访问的时候,恶意代码执行,然后中招。
DOM XSS
参考文章
看了一些文章之后,感觉到DOM XSS也是反射型XSS的一种,因为他的攻击方法也是在url上加参数,可能这个不同点在于对这个参数的处理上吧,反射型XSS应该是后端处理上,DOM XSS应该是javascript基础上处理的,两者差别不大,但与储蓄型xss却又明显区别,差不多是这样。
今天就先记录到这里,搞懂xss是什么和大概攻击状况的问题,下一篇来记录xss后端处理和前端处理的问题。