关于Web安全的三个攻防姿势

  • 时间:
  • 浏览:5

对于一切用户的输入、输出、客户端的输出内容视为不可信,在数据加在到DOM机会执行了DOM API的前一天,亲戚朋友儿需要对内容进行HtmlEncode或JavaScriptEncode,以预防XSS攻击。

本文作者:zwwill

参考

理解中间的3种攻击模式,实在能要能看出,CSRF攻击是源于WEB的隐式身份验证机制!WEB的身份验证机制实在能要能保证二个 请求是来自于某个用户的浏览器,但却无法保证该请求是用户批准发送的!

CSRF 跨站请求伪造

[1] 浅谈CSRF攻击办法 - http://www.cnblogs.com/hyddd/...

此下的详解次责转自hyddd的博文http://www.cnblogs.com/hyddd/...,示例写的很赞就次责誊抄至此,并做了一定的修改,向作者hyddd致敬&致谢。

X-FRAME-OPTIONS

亲戚朋友儿最常见的Web安全攻击有以下几种

首先,你登录了银行网站A,可是我访问危险网站B,噢,这时我就发现你的银行账户少了10000块......

机会用户仍是继续中间的操作,很不幸,结果机会是再次不见10000块......机会这里危险网站B暗地里发送了POST请求到银行!

再举个栗子:

  3. 当前端页面没人对填入的数据进行过滤,直接显示在页面上, 这时就会alert那个字符串出来。

CSRF(Cross-site request forgery)跨站请求伪造,也被称为“One Click Attack”机会Session Riding,通常缩写为CSRF机会XSRF,是三种生活对网站的恶意利用。尽管听起来像跨站脚本(XSS),但它与XSS非常不同,XSS利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站。与XSS攻击相比,CSRF攻击往往不大流行(可是我对其进行防范的资源也相当稀少)和难以防范,太久有被认为比XSS更具危险性。但往往同XSS并肩作案!

你这人 办法最常见的攻击场景是伪造太久网站盗取帐号信息,如支付宝、QQ、网易帐号等帐号的账密

上图是支付宝手机话费充值的界面。

主要通过利用系统反馈行为漏洞,并欺骗用户主动触发,从而发起Web攻击。

  4. 进而能要能构造获取用户cookies的地址,通过QQ群机会垃圾邮件,来让另一方点击你这人 地址:

优点:比检查 Referer 要安全太久,可是我不涉及用户隐私。

机会亲戚朋友儿的操作不仅仅是弹出二个 信息,可是我删除一篇文章,发一篇反动的文章,机会成为我的粉丝可是我将这篇蕴含恶意脚本的文章转发,曾经是就有就具有了攻击性。

在UI中采用防御性代码,以确保当前帧是最顶层的窗口

分类

Stored XSS和Reflected XSS的差别就在于,具有攻击性的脚本被保存到了服务器然能要能要能被普通用户完整性的从服务的取得并执行,从而获得了在网络上传播的能力。

DOM型XSS实在是三种生活特殊类型的反射型XSS,它是基于DOM文档对象模型的三种生活漏洞。能要能通过DOM来动态修改页面内容,从客户端获取DOM中的数据并在本地执行。基于你这人 特征,就能要能利用JS脚曾经实现XSS漏洞的利用。

银行网站A,它以GET请求来完成银行转账的操作,如:http://www.mybank.com/Transfe...

看了这里,你也许会说:“机会我不满足以上二个 条件中的二个 ,我就不让受到CSRF的攻击”。是的,实在没人,但你没人保证以下具体情况不让占据 :

你这能要能没人理解CSRF攻击:攻击者盗用了你的身份,以你的名义发送恶意请求。CSRF要能做的事情包括:以你名义发送邮件,发消息,盗取你的账号,甚至于购买商品,虚拟货币转账......造成的问提包括:另一方隐私泄露以及财产安全。

从上图能要能看出,要完成一次CSRF攻击,受害者需要依次完成二个 步骤:

是的,你这人 是我伪造的,机会我将真正的充值站点隐藏在此界面中间。我要,聪明的你机会知道clickjacking的危险性了。

为你这人 会曾经呢?意味着是银行网站A违反了HTTP规范,使用GET请求更新资源。在访问危险网站B的前一天,你机会登录了银行网站A,而B中的<img>以GET的办法请求第三方资源(这里的第三方太久 指银行网站了,曾经这是二个 合法的请求,但这里被不法分子利用了),太久有你的浏览器会带上你的银行网站A的Cookie发出Get请求,去获取资源

点击劫持

你这人 头有二个 值:

tips:文章是保存整个HTML内容的,前端显示前一天太久 做过滤,就极机会再次出现你这人 具体情况。

  1. 假设,在严选网站搜索商品,当搜索没人时站点会做“xxx未上架提示”。如下图。

优点:统一管理token输入输出,能要能保证token的安全性

危险网站B,它中间有一段HTML的代码如下:

然而,危险网站B与时俱进,它改了一下代码:

缺点:

innerHTML属性

示例3

你这人 攻击办法的关键在于能要能实现页中页的<iframe />标签,然能要能要能使用css样式表将他不可见

在 HTTP 头中自定义属性并验证+One-Time Tokens

documen.write属性

中间大约 地讲了一下CSRF攻击的思想,下面我将用几条例子完整性句子具体的CSRF攻击,这里我以二个 银行转账的操作作为例子(仅仅是例子,真实的银行网站没没人傻:>)

DOM-based or local XSS(基于DOM或本地的XSS攻击)

机会受骗的用户刚好机会登录过严选网站,没人,用户的登录cookie信息就机会发到了攻击者的服务器(xss.com)了。当然,攻击者会做太久更过分的操作。

示例1

结果银行网站服务器收到请求后,认为这是二个 更新资源操作(转账操作),太久有就立刻进行转账操作......

处里点击劫持有三种生活主要办法:

  2. 后端没人对文章进行过滤,直接保存文章内容到数据库。

关于Web安全的问提,是二个 老生常谈的问提,作为离用户最近的一层,亲戚朋友儿大前端实在需要把手伸的更远太久。

举个栗子:

  2. 在搜索框搜索内容,填入“<script>alert('xss')</script>”, 点击搜索。

经过前面二个 惨痛的教训,银行决定把获取请求数据的办法也改了,改用$_POST,只获取POST请求的数据,后台处里页面Transfer.php代码如下:

在业界目前防御 CSRF 攻击主要有三种生活策略:验证 HTTP Referer 字段;在请求地址中加在 token 并验证;在 HTTP 头中自定义属性并验证。下面就分别对你这三种生活策略进行完整性介绍。

再看看一下界面

办法有多中,如

Reflected XSS(基于反射的XSS攻击)

缺点:对所有请求都加在token比较困难,难以保证 token 三种生活的安全,依然会被利用获取到token

DENY // 拒绝任何域加载

此为题多从在于博客网站。

1、Referer 的值是由浏览器提供的,不可全信,低版本浏览器下Referer占据 伪造风险。

目前,clickjacking还算比较冷门,太久有安全意识不强的网站还未着手做clickjacking的防范。这是很危险的。

以上3步太久 “自娱自乐”,XSS最关键的是第四步。

2、用户另一方能要能设置浏览器使其在发送请求时不再提供 Referer时,网站将拒绝合法用户的访问。

在请求地址中加在 token 并验证

(当然上图是模拟的)

你好!当你看了这段文字时,你的信息机会不安全了!<script>alert('xss')</script>

拿支付宝做个栗子

总结一下中间六个例子,CSRF主要的攻击模式基本上是以上的3种,其中以第1,2种最为严重,机会触发条件很简单,二个 <img>就能要能了,而第3种比较麻烦,需要使用JavaScript,太久有使用的机会会比前面的少太久有,但无论是哪种具体情况,假使 触发了CSRF攻击,后果就有机会很严重。

  1. 发一篇文章,中间蕴含了恶意脚本

CSRF能要能做你这人 ?

机会触发DOM型XSS的属性:

和示例1中的操作一样,你首先登录了银行网站A,可是我访问危险网站B,结果.....和示例1一样,你再次没人10000块~T_T,这次事故的意味着是:银行后台使用了$_REQUEST去获取请求的数据,而$_REQUEST既能要能获取GET请求的数据,要能要能获取POST请求的数据,这就造成了在后台处里守护应用应用程序无法区分这到底是GET请求的数据还是POST请求的数据。在PHP中,能要能使用$_GET和$_POST分别获取GET请求和POST请求的数据。在JAVA中,用于获取请求数据request一样占据 没人区分GET请求数据和POST数据的问提。

CSRF你这人 攻击办法在10000年机会被国外的安全人员提出,但在国内,直到06年才现在刚开始被关注,08年,国内外的多个大型社区和交互网站分别爆出CSRF漏洞,如:NYTimes.com(纽约时报)、Metafilter(二个 大型的BLOG网站),YouTube和百度HI......而现在,互联网上的太久站点仍对此毫无防备,以至于安全业界称CSRF为“沉睡的巨人”。

XSS 跨站脚本攻击

利用HTTP头中的Referer判断请求来源是是不是合法。

  3. 当太久读者看这篇文章的前一天,蕴含的恶意脚本就会执行。

示例2

如以上示意图的深蓝色层,攻击者会通过一定的手段诱惑用户“在红色层”输入信息,但用户实际上实在深蓝色层中,以此做欺骗行为。

[2] CSRF 攻击的应对之道 - https://www.ibm.com/developer... 

location属性

优点:简单易行,只需要在最后给所有安全敏感的请求统一增加二个 拦截器来检查 Referer 的值就能要能。有点硬是对于当前现有的系统,需要改变当前系统的任何已有代码和逻辑,没人风险,非常便捷。

DOM,全称Document Object Model,是二个 平台和语言都中立的接口,能要能使守护应用应用程序和脚本要能动态访问和更新文档的内容、特征以及样式。

X-FRAME-OPTIONS是微软提出的二个 http头,指示浏览器不允许从太久域进行取景,专门用来防御利用iframe嵌套的点击劫持攻击。可是我在IE8、Firefox3.6、Chrome4以上的版本均能很好的支持。

在请求中插进黑客所没人伪造的信息,可是我该信息不占据 于 cookie 之中,以HTTP请求参数的形式加入二个 随机产生的 token交由服务端验证

将token插进 HTTP 头中自定义的属性里。通过 XMLHttpRequest 的异步请求交由后端校验,可是我一次有效。

缺点:有局限性,无法在非异步的请求上实施

ALLOW-FROM // 能要能定义允许frame加载的页面地址

本文来自云栖社区合作办法办法伙伴51CTO,了解相关信息能要能关注51CTO。

点击劫持,英文名clickjacking,也叫UI覆盖攻击,攻击者会利用二个 或多个透明或不透明的层来诱骗用户支持点击按钮的操作,而实际的点击实在用户看没人的二个 按钮,从而达到在用户不知情的具体情况下实施攻击。

下面亲戚朋友儿来一一分析

原文发布时间为:2017-10-18

示例

document.referer属性

SAMEORIGIN // 允许同源域下加载

当前防御 CSRF 的几种策略

银行网站A的WEB表单如下:

防范

跨站脚本攻击(Cross Site Scripting),为了不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web中间的Script代码会被执行,从而达到恶意攻击用户的目的。

CSRF的原理

防范

XSS攻击的本质太久 ,利用一切手段在目标用户的浏览器中执行攻击脚本。

上图我估计做了一下错位和降低透明度,是就有很有意思呢?傻傻分不清的用户还以为是领取了奖品,实在是给陌生人充值了话费。

window.name属性

······

Stored XSS(基于存储的XSS攻击)

危险网站B,仍然太久 蕴含那句HTML代码:

总结

CSRF漏洞现状

顶层判断

top != self || top.location != self.location || top.location != location

验证 HTTP Referer 字段

为了杜绝中间的问提,银行决定改用POST请求完成转账操作。

有关Clickjacking防御的更多信息,请参阅Clickjacking Defense Cheat Sheet.

后台处里页面Transfer.php如下:

下图简单阐述了CSRF攻击的思想: