什么是Clickjacking: X-Frame-Options header
时间: 2025-05-29 21:50:54 浏览: 12
### Clickjacking 攻击原理
Clickjacking 是一种恶意技术,通过欺骗用户点击看似无害的网页元素来实现攻击目标。具体来说,这种攻击利用透明的 iframe 将用户的鼠标点击重定向到另一个隐藏的目标页面上[^1]。例如,攻击者可以在一个不可见的 iframe 中加载银行登录界面,并将其覆盖在一个诱人的按钮之上。当用户认为自己正在点击某个链接或按钮时,实际上却完成了另一项操作,比如转账或者泄露敏感信息。
此类攻击之所以能够成功实施,主要是因为服务器未返回必要的安全防护机制——即 **X-Frame-Options** 或更现代的安全策略如 **Content-Security-Policy** 的缺失[^3]。
---
### X-Frame-Options Header 的作用
为了防范 Clickjacking 攻击,可以采用 **X-Frame-Options** HTTP 响应头作为解决方案之一。该头部的作用在于控制浏览器是否允许渲染当前页面于 `<frame>` 或 `<iframe>` 内[^2]。以下是其主要功能:
#### 语法选项
- **DENY**: 表明任何情况下都不允许将此页面嵌套至框架中,无论是来自同一域还是不同域。
- **SAMEORIGIN**: 允许同源请求中的页面被嵌入到框架里;而跨域则会被阻止[^3]。
#### 工作方式
一旦设置了合适的值(如 `DENY` 或 `SAMEORIGIN`),浏览器会在尝试加载受保护资源之前检查这些规则并决定如何处理请求。如果违反设定条件,则不会显示相关内容,从而有效避免潜在风险[^4]。
需要注意的是,尽管目前仍有广泛使用的场景,但随着标准化进程推进以及新特性引入,部分较新的浏览器已逐步淘汰单独依赖 X-Frame-Options 而转向推荐使用更为灵活强大的 CSP (Content Security Policy) 框架下的 `frame-ancestors` 指令替代原有方法。
```xml
<!-- Tomcat 配置示例 -->
<filter>
<filter-name>httpHeaderSecurity</filter-name>
<filter-class>org.apache.catalina.filters.HttpHeaderSecurityFilter</filter-class>
<init-param>
<param-name>antiClickJackingEnabled</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>antiClickJackingOption</param-name>
<param-value>SAMEORIGIN</param-value>
</init-param>
<async-supported>true</async-supported>
</filter>
<filter-mapping>
<filter-name>httpHeaderSecurity</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
```
上述代码片段展示了在 Apache Tomcat 环境下启用防点击劫持过滤器的具体做法[^4]。
---
###
阅读全文
相关推荐


















