使用JS客户端与VBScript服务端,如何防范ClickJacking攻击?
防范ClickJacking攻击的实操方案(JS客户端 + VBScript服务端)
一、X-Frame-Options响应头的选择与配置
X-Frame-Options是防范ClickJacking的核心HTTP头,三个可选值对应不同场景:
DENY:禁止任何页面将你的网站嵌入iframe,是最严格的限制,适合无需被其他页面内嵌的场景。SAMEORIGIN:仅允许同域名下的页面嵌入你的网站,适合有同域内嵌需求的场景。ALLOW-FROM uri:仅允许指定域名的页面嵌入,但该值兼容性极差(多数现代浏览器已不再支持),不推荐使用。
在VBScript服务端(如ASP)的配置方法
直接在服务端代码中添加响应头,建议放在全局公共文件(比如global.asa或通用包含文件)中,确保所有页面都能生效:
Response.AddHeader "X-Frame-Options", "DENY" ' 若需同域内嵌,替换为: ' Response.AddHeader "X-Frame-Options", "SAMEORIGIN"
二、完整防护步骤
仅靠响应头无法覆盖所有场景,需结合以下措施形成完整防护:
- 添加Frame Busting JavaScript代码
针对不支持X-Frame-Options的老旧浏览器,在客户端JS中加入检测逻辑,发现页面被嵌入iframe时强制跳出:
if (top !== self) { top.location.href = self.location.href; }
为应对攻击者劫持window.top的绕过手段,可强化代码:
(function() { const preventClickjack = () => { if (top !== self) { document.body.innerHTML = ''; top.location.href = self.location.href; } }; if (document.addEventListener) { document.addEventListener('DOMContentLoaded', preventClickjack); } else { window.attachEvent('onload', preventClickjack); } })();
- 配置Content-Security-Policy(CSP)的frame-ancestors指令
这是X-Frame-Options的现代替代方案,功能更灵活且兼容性更好,建议与X-Frame-Options配合使用,兼顾新老浏览器:
' 禁止所有嵌入,等效于X-Frame-Options: DENY Response.AddHeader "Content-Security-Policy", "frame-ancestors 'none'" ' 仅允许同域嵌入,等效于X-Frame-Options: SAMEORIGIN ' Response.AddHeader "Content-Security-Policy", "frame-ancestors 'self'" ' 允许指定多个可信域名嵌入 ' Response.AddHeader "Content-Security-Policy", "frame-ancestors https://trusted-domain.com https://another-trusted.com"
- 敏感操作额外验证
对于登录、支付、用户信息修改等高危操作,补充以下防护:
- 要求用户输入验证码或进行二次确认
- 使用CSRF令牌,确保请求来自你的网站
- 校验请求的Referer头(虽非绝对可靠,但可作为补充验证)
- 关闭非必要的内嵌能力
除非有明确业务需求,否则禁止网站页面提供可被嵌入的功能;若必须内嵌,需严格控制可信域名白名单。
内容的提问来源于stack exchange,提问作者Anindya Biswas
相关产品推荐
相关产品推荐

