从 NextJS SSRF 漏洞看 Host 头滥用所带来的危害
import { NextResponse } from 'next/server';
async function handleRequest(req) {
const { nextStart } = $nextStart;
const { host } = req.headers;
// 如果 Host 头部不是以 localhost 或 127.0.0.1 开头,则认为是不安全的用法
if (!/^localhost|^127\.0\.0\.1/.test(host)) {
return NextResponse.redirect('https://example.com'); // 重定向到安全的地址
}
// 以下是正常的服务器端渲染逻辑
const result = await nextStart(req, {
// ... 其他配置 ...
});
return result;
}
在这个示例中,我们检查了 Host 头是否以 localhost
或 127.0.0.1
开头。如果不是,我们将用户重定向到一个安全的地址,以防止可能的服务器端请求伪造(SSRF)攻击。这是一个防御措施,用于保护服务器免受不安全的请求影响。
评论已关闭