Web前端安全系列之:XSS攻防

前言 Web 安全的兴起

  `Web` 攻击技术的发展也可以分为几个阶段。在 `Web 1.0` 时代,人们更多的是关注服务器端动态脚本的安全问题,比如将一个可执行脚本(俗称 `webshell`)上传到服务器上,从而获得权限。后续有出现了`SQL`注入,`SQL`注入的出现是`Web`安全史上的一个里程碑,`SQL`注入漏洞至今仍然是`Web`安全领域中的一个重要组成部分。再后续另一个里程碑的安全问题问世--`XSS`(跨站脚本攻击)。伴随着 `Web 2.0` 的兴起,`XSS`、`CSRF` 等攻击已经变得更为强大。`Web` 攻击的思路也从服务器端转向了客户端,转向了浏览器和用户。

  `Web` 技术发展到今天,构建出了丰富多彩的互联网。互联网业务的蓬勃发展,也催生出了许多新兴的脚本语言,比如 `Python`、`Ruby`、`NodeJS` 等,敏捷开发成为互联网的主旋律。而手机技术、移动互联网的兴起,也给 `HTML 5` 带来了新的机遇和挑战。与此同时,`Web` 安全技术,也将紧跟着互联网发展的脚步,不断地演化出新的变化。

  跨站脚本攻击(`XSS`)是客户端脚本安全中的头号大敌。`OWASP TOP 10` 威胁多次把 `XSS`列在榜首,该篇文章将重点介绍`XSS`的攻防问题

初探XSS

  **跨站脚本攻击**,英文全称是 `Cross Site Script`,本来缩写是 `CSS`,但是为了和层叠样式表(`Cascading Style Sheet`,`CSS`)有所区别,所以在安全领域叫做“`XSS`”。

  `XSS`攻击,通常指黑客通过`HTML`注入 篡改网页,插入恶意脚本,从而在用户浏览网页时,控制用户浏览器的一种攻击行为。在这种行为最初出现之时,所有的演示案例全是跨域行为,所以叫做 "跨站脚本" 。时至今日,随着`Web`端功能的复杂化,应用化,是否跨站已经不重要了,但 `XSS`这个名字却一直保留下来。

  随着`Web`发展迅速发展,`Web`开发已经被应用的非常广泛了,由之前的单一`PC`端扩展到现在的移动端(`APP`、`H5`),甚至包括桌面工具、设备大屏等等,所以在产生的应用场景越来越多,越来越复杂的情况下,同时大多数互联网(尤其是传统行业)的产品开发版本迭代上线时间非常短,一周一版本,两周一大版本的情况下,忽略了安全这一重要属性,一旦遭到攻击,后果将不堪设想。

XSS攻击类型分类

XSS攻击可以分为3类:反射型(非持久型)、存储型(持久型)、基于DOM XSS

反射型

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

  通常反射型`XSS`的恶意代码存在`URL`里,通过`URL`传递参数的功能,如网站搜索、跳转等。由于需要用户主动打开恶意的`URL`才能生效,攻击者往往会结合多种手段诱导用户点击。

一个最初级的反射型攻击是:我们对网页数据进行获取:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>XSS攻防演练</title>
</head>
<body><div id="t"></div><input id="s" type="button" value="这是一个按钮" onclick="test()">
</body>
<script> function test() {const arr = ['自定义的数据1', '自定义的数据2', '自定义的数据3', '<img src="11" onerror="console.log(window.localStorage)" />'];const t = document.querySelector('#t');arr.forEach(item => {const p 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值