由于遵从性原因,我们无法在应用程序中收集或处理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头(或任何其他字段)中也是不可见的?如本文所示:
如果查看器向CloudFront发送请求而不包括
X-Forwarded-For请求头,则CloudFront从TCP连接获取查看器的IP地址,添加包含IP地址的X转发报头,并将请求转发到源。
因此,所有请求都将在X-Forwarded-For报头中显示IP地址。有办法让这个失效吗?
发布于 2022-04-21 13:53:55
Cloudfront函数可以在Viewer Request阶段运行,以修改传入的请求头,但是当请求传递到原点时,客户端IP仍然会附加到X-Forwarded-For。
但是,您可以在Origin Request阶段使用Lambda@Edge来修改发送到原点的头(例如,删除X-Forwarded-For)。
下面是在Node.js中的情况:
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的最后一部分:
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;
};当然,如果需要,可以将其扩展到其他标头。
https://stackoverflow.com/questions/71413719
复制相似问题