什么是跨站脚本攻击xss?
恶意攻击者向Web页面里插入恶意html代码,当用户浏览该页时,嵌入Web里面的html代码会被执行,从而达到恶意攻击用户的特殊目的。
分析一下xss的特点:
1、耗时间
2、有一定几率不成功
3、没有相应的软件来完成自动化攻击
4、前期需要基本的html、js功底,后期需要扎实的html、js、actionscript2/3.0等语言的功底
5、是一种被动的攻击手法
6、如果website有http-only、crossdomian.xml, 则没有用
'; }else{ echo '
'; } ?>
我们在输入框里输入 ">
分析这一段的代码,前面的">是为了闭合前面的`input,这个输入就可以使弹窗出现
我们也可以输入 " onclick="alert('xss')
因为onclick是鼠标点击事件,也就是说当你的鼠标点击第二个input输入框的时候,
就会触发`onclick 事件,然后执行xss
Js可以干很多的事,可以获取cookies(对http-only没用)、控制用户的动作(发帖、私信什么的)等等。
比如我们在网站的留言区输入下面的代码:
当管理员进后台浏览留言的时候,就会触发,然后管理员的cookies和后台地址还有管理员浏览器版本等等你都可以获取到了
下面是XSS攻击方法:
Stored XSS
Stored XSS是存储式XSS漏洞,由于其攻击代码已经存储到服务器上或者数据库中,所以受害者是很多人
例如一个网站a.com可以发文章,我登录后在a.com中发布了一篇文章,文章中包含了恶意代码
保存文章
这时Tom和Jack看到了我发布的文章,当在查看我的文章时就都中招了
他们的cookie信息都发送到了我的服务器上,攻击成功!
这个过程中,受害者是多个人。
Stored XSS漏洞危害性更大,危害面更广。
XSS防御方法:
完善的过滤体系
永远不相信用户的输入。需要对用户的输入进行处理,只允许输入合法的值,其它值一概过滤掉
假如某些情况下,我们不能对用户数据进行严格的过滤,那我们也需要对标签进行转换
less-than character (<)<
greater-than character (>)>
ampersand character (&)&
double-quote character (“)"
space character( ) 
比如用户输入
保存后最终存储的会是
<