首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否可以将Cloudfront配置为在传递到原点之前清除传入请求中的所有IP地址?

是否可以将Cloudfront配置为在传递到原点之前清除传入请求中的所有IP地址?
EN

Stack Overflow用户
提问于 2022-03-09 17:40:45
回答 1查看 445关注 0票数 2

由于遵从性原因,我们无法在应用程序中收集或处理IP地址。初步看来,新的(Ish) Cloudfront函数可能能够完成所需的任务。https://aws.amazon.com/blogs/aws/introducing-cloudfront-functions-run-your-code-at-the-edge-with-low-latency-at-any-scale/

是否可以完全删除传入的IP地址,以便即使在原点的X-Forwarded-For头(或任何其他字段)中也是不可见的?如本文所示:

https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/RequestAndResponseBehaviorCustomOrigin.html#RequestCustomIPAddresses

如果查看器向CloudFront发送请求而不包括X-Forwarded-For请求头,则CloudFront从TCP连接获取查看器的IP地址,添加包含IP地址的X转发报头,并将请求转发到源。

因此,所有请求都将在X-Forwarded-For报头中显示IP地址。有办法让这个失效吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-21 13:53:55

Cloudfront函数可以在Viewer Request阶段运行,以修改传入的请求头,但是当请求传递到原点时,客户端IP仍然会附加到X-Forwarded-For

但是,您可以在Origin Request阶段使用Lambda@Edge来修改发送到原点的头(例如,删除X-Forwarded-For)。

下面是在Node.js中的情况:

代码语言:javascript
复制
exports.handler = async (event, context) => {
    const request = event.Records[0].cf.request;
    const headers = request.headers;
    
    delete request.headers['x-forwarded-for'];
    return request;
};

或者,如果您想要搜索IP的最后一部分:

代码语言:javascript
复制
exports.handler = async (event, context) => {
    const request = event.Records[0].cf.request;
    const headers = request.headers;
    
    request.headers['x-forwarded-for'] = [{
        key: 'X-Forwarded-For',
        value: request.clientIp.replace(/\w+$/, '0')}];
    return request;
};

当然,如果需要,可以将其扩展到其他标头。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71413719

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档