什么是点击劫持?如何预防?
点击劫持(Clickjacking)是一种网络攻击方式,攻击者通过将受害者的页面嵌入到一个透明的 iframe 中,诱使用户在不知情的情况下点击该 iframe 上的元素。这种攻击可以导致用户在不知情的情况下执行操作,例如提交表单、购买商品或更改账户设置。

### 点击劫持的工作原理

攻击者创建一个网页,其中包含透明的 iframe,iframe 里加载了受害者网站的页面。用户在该页面上执行点击时,实际上是点击了 iframe 内的内容,而不是他们所认为的内容。这可能导致用户的账户被篡改或私密信息被泄露。

### 如何预防点击劫持

1. **使用 X-Frame-Options 响应头**:
该头部可以阻止网页被嵌入到 iframe 中。可设置为:
- `DENY`:完全禁止嵌入。
- `SAMEORIGIN`:仅允许同源嵌入。
- `ALLOW-FROM uri`:仅允许特定来源嵌入。

示例代码:
```http
X-Frame-Options: DENY
```

2. **Content Security Policy (CSP)**:
可以通过 CSP 中的 `frame-ancestors` 指令来控制哪些来源可以嵌入页面。此方法比 X-Frame-Options 更灵活。

示例代码:
```http
Content-Security-Policy: frame-ancestors 'self';
```

3. **JavaScript 防护**:
通过 JavaScript 检测页面是否被嵌入在 iframe 中,如果是,则跳转到自身页面。例如:
```javascript
if (window.top !== window.self) {
window.top.location = window.self.location;
}
```

4. **用户教育**:
教育用户不要随意点击不明链接和弹窗,提升安全意识。

### 总结

点击劫持是一种潜在的安全威胁,但通过使用适当的 HTTP 响应头(如 X-Frame-Options 和 CSP)、JavaScript 检测以及用户
展开
2