常见Web攻击

ⅰ亾dé卋堺 提交于 2019-11-30 11:52:17

XSS

XSS(Cross-Site  Scripting)跨站脚本攻击,因为缩写和CSS重叠,故叫XSS。跨站脚本攻击是指通过存在安全漏洞的Web网站注册用户的浏览器内运行非法的HTML标签或者JavaScript进行的一种攻击。

存储型XSS

存储型 XSS 的攻击步骤:
  1. 攻击者将恶意代码提交到⽬标⽹站的数据库中。
  2. ⽤户打开⽬标⽹站时,⽹站服务端将恶意代码从数据库取出,拼接在 HTML 中返回给浏览器。
  3. ⽤户浏览器接收到响应后解析执⾏,混在其中的恶意代码也被执⾏。
  4. 恶意代码窃取⽤户数据并发送到攻击者的⽹站,或者冒充⽤户的⾏为,调⽤⽬标⽹站接⼝执⾏攻击者指定的操作。
这种攻击常⻅于带有⽤户保存数据的⽹站功能,如论坛发帖、商品评论、⽤户私信等。

反射型XSS

反射型 XSS 的攻击步骤:
  1. 攻击者构造出特殊的 URL,其中包含恶意代码。
  2. ⽤户打开带有恶意代码的 URL 时,⽹站服务端将恶意代码从 URL 中取出,拼接在 HTML 中返回给浏览器。
  3. ⽤户浏览器接收到响应后解析执⾏,混在其中的恶意代码也被执⾏。
  4. 恶意代码窃取⽤户数据并发送到攻击者的⽹站,或者冒充⽤户的⾏为,调⽤⽬标⽹站接⼝执⾏攻击者指定的操作。
反射型 XSS 跟存储型 XSS 的区别是:存储型 XSS 的恶意代码存在数据库⾥,反射型 XSS 的恶意代码存在 URL ⾥。
反射型 XSS 漏洞常⻅于通过 URL 传递参数的功能,如⽹站搜索、跳转等。
由于需要⽤户主动打开恶意的 URL 才能⽣效,攻击者往往会结合多种⼿段诱导⽤户点击。
POST 的内容也可以触发反射型 XSS,只不过其触发条件⽐较苛刻(需要构造表单提交⻚⾯,并引导⽤户点击),所以⾮常少⻅。

DOM型XSS

DOM 型 XSS 的攻击步骤:
  1. 攻击者构造出特殊的 URL,其中包含恶意代码。
  2. ⽤户打开带有恶意代码的 URL。
  3. ⽤户浏览器接收到响应后解析执⾏,前端 JavaScript 取出 URL 中的恶意代码并执⾏。
  4. 恶意代码窃取⽤户数据并发送到攻击者的⽹站,或者冒充⽤户的⾏为,调⽤⽬标⽹站接⼝执⾏攻击者指定的操作。
DOM 型 XSS 跟前两种 XSS 的区别:DOM 型 XSS 攻击中,取出和执⾏恶意代码由浏览器端完成,属于前端
JavaScript ⾃身的安全漏洞,⽽其他两种 XSS 都属于服务端的安全漏洞。

跨站脚本攻击有可能造成以下影响:

  • 利用虚假表单输入骗取用户个人信息
  • 利用脚本窃取用户的cookie值,受害者在不知情的情况下,帮助攻击者发送恶意请求
  • 显示伪造的内容
  • 获取页面数据
  • 劫持前端逻辑

攻击防范

1,HEAD

 

2,CSP

CSP本质上是建立白名单,开发者明确告诉浏览器哪些外部资源可以加载和执行,我们只需要配置规则,如何拦截有浏览器自己实现。我们可以通过这种方式来尽量减少XSS攻击。

3,转义字符

对于服务器来说,用户的输入永远不可信任,最普遍的做法就是转义输入输出的内容,对于引号、尖括号、斜杠等进行转义。

但是对于富文本提交的内容来说,用上面的方法来转义所有字符,会把需要的格式也过滤掉。对于这种情况,通常采用白名单过滤的方法。当然也可以通过黑名单进行过滤,但是因为需要过滤的标签和属性实在太多,使用白名单会更加简便。

4,HttpOnly Cookie

这是预防XSS攻击窃取用户cookie最有效的防御手段。Web应用程序在设置cookie时,将其属性设置为HttpOnly,就可以避免该网页的cookie被客户端恶意JavaScript窃取,保护用户cookie信息。

 CSRF

CSRF(Cross Site Request Forgery)跨站请求伪造,是一种常见的Web攻击,它利用用户已登录的身份,在用户不知情的情况下,以用户的身份名义完成非法操作(诱导用户访问恶意攻击者提供的危险站点)。

CSRF攻击造成的危害:

  • 利用用户登录状态,执行非法操作
  • 盗取用户资金(转账、消费)
  • 冒充用户发布恶意言论。损害用户和网站声誉

攻击防范

  • 禁止第三方网站带Cookie
  • Referer Check - Https不发送referer
  • 使用验证码

点击劫持 - clickjacking

点击劫持是一种视觉欺骗的攻击手段。攻击者将需要攻击的网站通过iframe嵌套的方式嵌入自己的网页中,并将iframe设置为透明,在页面中透出一个按钮诱导用户点击。

攻击防范

1,X-FRAME-OPTIONS

X-FRAME-OPTIONS是一个HTTP响应头,在现代浏览器有一个很好的支持,这个HTTP响应头就是为了防御用iframe嵌套的点击劫持攻击。

该响应头有三个值可选:

  • DENY:页面不允许通过iframe的方式展示
  • SAMEORIGIN:页面可以在相同域名下通过iframe的方式展示
  • ALLOW-FROM:页面可以在指定来源的iframe中展示

 2,js方式

使用js的方式,就是当通过iframe的方式加载页面时,通过js脚本让攻击者的网页直接不显示所有内容。

 

 

 

网络请求劫持

 网络劫持一般分为两种:

  • HTTP劫持:由于http明文传输,运营商会修改我们的http响应内容(加广告等)
  • DNS劫持(输入网址a,却被强制跳转到b网站)
  1. DNS强制解析:通过修改运营商的本地DNS记录,来引导用户流量到缓存服务器
  2. 302跳转的方式:通过监控网络出口的流量,分析判断哪些内容是可以进行劫持处理的,再对劫持的内存发起302跳转的回复,引导用户获取内容。

 

 攻击防范

DNS劫持由于涉嫌违法,已经被监管起来,现在很少会有DNS劫持。而HTTP劫持依然非常盛行,最有效的办法就是全站HTTPS,将HTTP加密,这使得运营商无法获取明文,就无法劫持响应内容了。

需要注意的是,这里说的是全站HTTPS,因为非全站的HTTPS并不安全。

DDOS

DDOS(distributed denial of service)不是一种攻击,而是一大类攻击的总称。它有几十种类型,新的攻击方法还在不断发明处理。网站运行的各个环节,都可以是攻击目标。只要把一个环节攻破,使得整个流程跑不起来,就达到了瘫痪服务的目的。

其中,比较常见的一种攻击是CC攻击。它就是简单粗暴地送来大量正常的请求,超出服务器的最大承受量,导致宕机。

攻击防范

 1,备份网站

备份网站不一定是全功能的,如果能做到全静态浏览,就能满足需求。最低限度应该可以显示公告,告诉用户网站出了问题,正在全力抢修。

2,HTPP请求拦截

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!