点击劫持

目录

介绍

🔐 什么是点击劫持(Clickjacking)?

是一种攻击方式,攻击者在自己的网页中用 <iframe> 偷偷嵌入你的网站,然后诱导用户点击,从而在你的网站上执行操作

举个例子:

• 你的网站是银行后台:https://bank.com/transfer

• 攻击者在自己的页面里偷偷这样写:

<iframe src="https://bank.com/transfer" style="opacity: 0; position: absolute; z-index: 999;"></iframe>

✅ 如何防御?

就是你加的这两行 header:

1. X-Frame-Options: DENY

• 含义:绝不允许被任何网站通过 <iframe> 引入

• 替代值还有:

• SAMEORIGIN:只允许同源网站嵌入

• ALLOW-FROM uri:只允许某个域名嵌入(现代浏览器不支持了)

2. Content-Security-Policy: frame-ancestors ‘none’

• 是 CSP 的一部分,作用跟上面那个类似,但更灵活

• ‘none’ 表示:所有 iframe 嵌套都禁止

• 这个比 X-Frame-Options 更现代,支持更多场景

完全一样的作用,它就是在响应头中加:

X-Frame-Options: DENY

如果你想,我还可以帮你整理一份标准的「FastAPI 安全响应头配置」,包括: • Strict-Transport-Security • X-Content-Type-Options • Referrer-Policy • Permissions-Policy

安全响应头

通用的安全头响应

class SecureHeadersMiddleware(BaseHTTPMiddleware):
    async def dispatch(self, request: Request, call_next):
        response: Response = await call_next(request)

        # 💡 安全相关响应头
        response.headers["X-Frame-Options"] = "DENY" # 防止点击劫持
        response.headers["Content-Security-Policy"] = "frame-ancestors 'none'" # 现代的iframe 限制
        response.headers["X-Content-Type-Options"] = "nosniff" # 防止MIME类型混淆
        response.headers["Referrer-Policy"] = "no-referrer" # 防止referrer泄露

        return response

点赞一下

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦