跨站脚本攻击(XSS)--简介

 英文全称(Cross Site Script),简称“XSS”。

 XSS攻击,通常指黑客通过“HTML注入”篡改了网页,插入了恶意的脚本,从而在用户浏览网页时,控制用户浏览器的一种攻击。

 XSS根据效果不同分为:

 1.反射型XSS

例如:

<div>${input}</div>

正常URL请求假设是这样:

http://www.a.com/test.htm?param=这是一个测试!

传递给变量input的值是“这是一个测试!”。然而,如果请求URL是:

http://www.a.com/test.htm?param=<script>alert(/XSS/)</script>

就会发现alert()方法执行了。可以查看网页源代码确认。


反射型XSS只是简单地把用户输入的数据“反射”给浏览器。黑客往往需要诱使用户“点击”一个恶意链接,才能攻击成功。反射型XSS也叫做“非持久型XSS”(Non-persistent XSS)。


 2.存储型XSS

 存储型XSS会把用户输入的数据“存储”在服务器端。有很强的稳定性。

 比较常见的一个场景就是,黑客写下一篇包含有JavaScript代码的博客文章,文章发表后,所有访问该博客文章的用户,都会在他们的浏览器中执行这段恶意的JavaScript代码。黑客把恶意的脚本保存到服务器端,所以这种XSS攻击就叫做“存储型XSS”。存储型XSS通常也叫做“持久型XSS”(Persistent XSS)。


 3.DOM Based XSS

 这种类型的XSS并非按照“数据是否保存在服务器端”来划分,DOM Based XSS从效果上来说也是反射型XSS。

 DOM Based XSS:通过修改页面的DOM节点形成的XSS。

<script>
function test(){
 var str = document.getElementById("test").value;
 document.getElementById("t").innerHTML="<a href='"+str+"'>testLink<>";
}
</script>

<div id="t"></div>
<input type="text" id="text" value=""/>
<input type="button" id="s" value="write" οnclick="test()"/>
在这里,“write”按钮的onclick事件调用了test()函数。而在test函数中,修改了页面的DOM节点,通过innerHTML把一段用户数据当做HTML写入到页面中,这就造成了DOM based XSS。

 构造数据:

’ οnclick=alert(/XSS/) //
 输入后,页面代码就变成了:

<a href='' οnclick=alert(/XSS/) //' >testLink</a>

//在这里是注释掉后面的单引号。

点击这个新生成的链接,脚本将被执行。


 除了构造一个新事件外,还可以选择闭合掉<a>标签,并插入一个新的HTML标签。

 尝试如下输入:

 

’><img src=# οnerrοr=alert(/XSS2/)/><'

页面代码变成了:

<a href=''><img src=# οnerrοr=alert(/XSS2/)/><' ' >testLink</a>

恶意脚本被执行。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值