【Web安全】点击劫持 Click Jacking

1、什么是点击劫持

点击劫持是一种视觉上的欺骗手段。攻击者用一个透明的、不可见的iframe,覆盖在一个网页上,诱使用户在该网页上进行操作,使用户在不知情的情况下点击透明的iframe页面。通过调整iframe页面的位置,可以使用户恰好点击在iframe的一些功能性按钮上。

通俗的讲,就是你在点击一个“网页”的某个位置时,很可能是点击了隐藏在页面下的某个按钮,从而达到了黑客的某些目的,这对用户来说是不可见的。

相对于XSS和CSRF,需要与用户进行交互,实施攻击的成本较高,在网络犯罪中比较少见。但未来仍可能被利用于钓鱼、欺诈和广告作弊等方面。

2、Flash 点击劫持

一个案例:攻击者通过Flash制作出了一个游戏,让用户去点击“Click”按钮,每次点击之后这个按钮的位置就会发生变化,实际上页面下隐藏了一个看不见的iframe,诱导用户去点击该隐藏页面中的某些位置,从而完成一系列复杂的操作,最终控制了用户电脑的摄像头。

3、图片覆盖攻击 

一位叫sven.vetsch的安全研究者最先提出了这种Cross Site Image Overlaying攻击,简称XSIO。不同于XSS,它利用的是图片的style,或者能够控制CSS。如果应用没有限制style的position为absolute的话,图片就可以覆盖到页面上的任意位置,形成点击劫持。

例如某网站的logo图片被覆盖了,并且新的图片只想某个黑客设定的网站,如果用户点击了logo图片,就会被链接到黑客设定的网站。

图片还可以 伪装的像一个正常的链接、按钮,或者在图片中构造一些文字,覆盖在关键位置,就有可能完全改变页面中想表达的意思,这种情况下,无需用户点击,也能达到欺骗的目的。

4、拖拽劫持与数据窃取

目前很多浏览器都开始支持Drag&Drop 的API。对于用户来说,拖拽更为方便。拖拽对象可以是一个链接、一段文字、或者从一个窗口拖到另一个窗口,因此拖拽是不受同源策略限制的。

拖拽劫持的思路是诱使用户从隐藏的iframe中拖拽出攻击者希望得到的数据,然后放到攻击者能够控制的另一个页面中,从而窃取数据。

5、ClickJacking3.0:触屏劫持

一次触屏操作,可能会对应以下几个事件:

(1)touchstart:手指触摸屏幕时发生

(2)touchend:手指离开屏幕时发生

(3)touchmove:手指滑动时发生

(4)touchcancel:系统可以取消touch事件

通过将一个不可见的iframe隐藏到当前网页上,就可以劫持用户的触屏操作。尤其是手机浏览器为了节约空间,会隐藏地址栏,导致欺骗更容易实施。

6、防御ClickJacking

针对传统的ClickJacking一般是通过禁止跨域的iframe来防范。

6.1 frame busting

写一段Javascript代码禁止iframe的嵌套,比如:

if (top.location != location){
    top.location=self.location;
}

但由于Javascript的控制能力不强,可以利用下面的代码绕过上面的保护代码。

Attacker top frame:
<iframe src="attacker2 .html">
Attacker sub-frame:
<iframe src="http://www.victim.com">

此外,像HTML5中iframe的sandbox属性、IE中iframe的security属性等,都可以限制iframe页面中的Javascript脚本运行,从而使frame busting失效。

6.2 X-Frame-Options

目前有以下浏览器支持X-Frame-Options:
(1)IE 8+

(2)Opera 10.50+

(3)Safari 4+

(4)Chrome 4.1.249.1042+

(5)Firefox 3.6.9(or earlier with NoScript)

它有三个可选的值:

(1)DENY

(2)SAMEORIGIN

(3)ALLOW-FROM origin

当值为DENY时,浏览器会拒绝当前页面加载任何的frame页面

当值为SAMEORIGIN时,则frame页面的地址只能为同源域名下的页面

当值为ALLOW-FROM origin时,则可以定义允许frame加载的页面地址

除了X-Frame-Options之外,Firefox的“Content Security Policy”以及Firefox的NoScript扩展也能够有效防御Click Jacking。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
JWT(JSON Web Token)是一种用于进行身份验证和授权的开放标准。它通过在请求中传递一个包含用户信息和签名的令牌来实现身份验证。然而,由于JWT是基于token的认证方式,存在一些安全风险,其中之一就是JWT Cookie劫持(JWT Cookie Hijacking)。 JWT Cookie劫持是指攻击者通过窃取用户的JWT令牌并将其存储在Cookie中,然后利用该令牌来冒充用户身份进行恶意操作。攻击者可以通过各种方式获取JWT令牌,例如通过网络嗅探、XSS攻击或社交工程等手段。 为了防止JWT Cookie劫持,可以采取以下措施: 1. 使用HTTPS协议:通过使用HTTPS协议来加密通信,可以防止网络嗅探攻击者获取JWT令牌。 2. 设置安全的Cookie标记:在设置JWT令牌的Cookie时,可以使用`Secure`和`HttpOnly`标记来增加安全性。`Secure`标记要求仅在HTTPS连接中传输Cookie,而`HttpOnly`标记则禁止JavaScript访问Cookie,从而防止XSS攻击。 3. 限制令牌的有效期:可以设置JWT令牌的有效期较短,以减少令牌被劫持的风险。一旦令牌过期,用户将需要重新进行身份验证。 4. 使用刷新令牌:刷新令牌是一种用于更新JWT令牌的机制。通过定期更新JWT令牌,可以减少令牌被劫持的时间窗口。 总结起来,为了防止JWT Cookie劫持,需要使用HTTPS协议、设置安全的Cookie标记、限制令牌的有效期以及使用刷新令牌等措施来增加安全性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

RexHarrr

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值