什么是 ClickJacking?如何防范?
ClickJacking 是一种恶意网络攻击技术,通过隐藏的 iframe 覆盖网页内容,诱使用户执行 unintended 操作。本题探讨了其工作原理及前端防御策略。
ClickJacking(点击劫持)是一种网络安全攻击手段,攻击者通过创建一个透明或不显眼的界面(通常是利用iframe和CSS实现),覆盖在正常的网页内容上,诱使用户点击表面上的合法元素而实际上是执行恶意动作(如资金转账、信息泄露或权限授予)。这是一种基于视觉欺骗的入侵,常见于浏览器机制导致的跨域操作漏洞。
为防范ClickJacking,前端面试题中重点掌握以下措施:
- 设置 X-Frame-Options HTTP响应头:服务器端添加该 Header 值来控制 iframe 内容加载方式:
X-Frame-Options: DENY(阻止所有 iframe) X-Frame-Options: SAMEORIGIN(只允许同源域名加载)
这种做法高效且得到现代浏览器广泛支持,能有效防御基本框架嵌套攻击。
- 启用内容安全策略(CSP):在HTTP响应中配置
frame-ancestors
指令明确指定合法加载 source:Content-Security-Policy: frame-ancestors 'self';
它比 X-Frame-Options 更灵活,支持更细致的网站嵌入规则。
- JavaScript辅助检测但不优先信赖:可以通过 client-side script 检查框架上下文防范 iframe 嵌套,但易被绕过只作辅助:
if (top !== window) top.location = window.location.href;
此方法实用价值较低,应作为补充而非常信依据。