问题标签 [x-forwarded-for]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
1225 浏览

amazon-web-services - AWS ELB 使用 X-Forwarded-For 作为客户端 IP 记录到 S3

我们有一个 DDoS 层 (Project Shield),它将公共请求转发到我们的 AWS 应用程序负载均衡器 (ALB)。我们的 ALB 已启用访问日志记录(到 S3 存储桶)。除了设置存储桶、设置权限和启用此功能之外,我还没有找到很多配置选项。

似乎 ALB 日志将客户端 IP 存储为 Project Shield(与 X-Forwarded-For 标头中列出的 IP 相比)。是否可以让 ALB 记录原始客户端 ip(在 X-Forwarded-For 中最左侧)?

如果这是不可能的,也许有一个我忽略的更好的解决方案。

我的目标是让我们的防火墙设置解析这些日志,根据规则清洗它们,并根据恶意流量/模式将 IP 列入黑名单。

提前致谢。

0 投票
1 回答
235 浏览

nginx - 在 AWS ALB 上使用多个域在 NGINX 级别阻止 IP

我有一个 AWS ALB,它附加到多个域名。ALB 将流量转发到带有 NGINX 的 EC2 机器,这里 NGINX 也有多个与之关联的域。

我只想允许从特定 IP 访问我的域之一。并且所有其他域都应该可以从 0.0.0.0/0 访问。

这可以通过仅修改该域的配置文件而不是修改 nginx.conf 来完成(这样该设置将仅适用于一个域)

PS 限制应仅适用于单个域。

0 投票
2 回答
4014 浏览

google-apps-script - 如何将具有基本授权的 UrlFetchApp 分配给按钮?

我在 Google Apps Script 中创建了函数,当我在 Google Apps Script 中运行它时效果很好。输出数据返回到 Google 表格。

单元格中的输出:

然后我将脚本分配给按钮“testFunction11”。当我单击按钮时,它会返回

它看起来像来自 API 服务器的响应。

我唯一的假设是谷歌工作表的按钮添加了一些标题、用户代理或内容类型来请求,这在 API 服务器中是不允许的。经过一番搜索,我想我无法在请求中重新分配用户代理。这是对的还是我做错了?

编辑1:

每个案例的标题console.log(UrlFetchApp.getRequest(url, params)):单击电子表格中的按钮时:

对于脚本:

所以按钮只添加X-Forwarded-For.

当我尝试手动添加X-Forwarded-For: 'unknown'时出现这样的错误

俄语中的错误文本,很抱歉可能翻译不准确。这很有趣,因为当我Test: unknown以同样的方式添加时,没有错误,但显然不起作用。看起来谷歌不允许更改此值。

将在邮递员中尝试不同的标头,并可能确认此标头是错误的原因。谢谢@TheMaster

编辑2:

我通过邮递员尝试了不同的标题。因此,结果是当我添加任何值的标题X-Forwarded-For键时,它会返回"message": "An error has occurred." 当我不添加此键时,它运行良好。

因此,问题是通过 Google Apps 脚本禁用添加此标头的任何方法。好像没有。

0 投票
0 回答
622 浏览

c# - 为什么 https 请求资源时缺少“X-Forwarded-For”和“Via”标头?

我正在构建一个 Asp.Net Core Web 应用程序。我创建了一个以 json 格式返回请求标头的资源。我假设,当我通过透明代理服务器(来自列表https://www.proxynova.com/proxy-server-list/transparent-proxies/)请求此资源时,保证添加 X-Forwarded-For 和 Via 标头要请求,我将在响应的 json 中看到这些标头:

请求: https ://res.cloudinary.com/leninsdo/image/upload/v1550267036/1_vmfx0z.png

回复: https ://res.cloudinary.com/leninsdo/image/upload/v1550267039/2_dtftny.png

但是,当我通过 https 请求具有相同代理的完全相同的资源时,我在响应中看不到这些标头:

请求:https ://res.cloudinary.com/leninsdo/image/upload/v1550267251/3_qlifuv.png

回复:https ://res.cloudinary.com/leninsdo/image/upload/v1550267313/4.png

我使用 Kestrel 作为 Web 服务器,并以这种方式在 Program.cs 中对其进行配置:

控制器中迭代标头并将它们序列化为 json 的代码也很常见,并且似乎不是问题的根源:

而且我完全不知道为什么当通过 https 而不是 http 请求资源时,标头 Via 和 X-Forwarded-For 会消失。我已经使用来自许多不同站点的各种代理对其进行了测试 - 结果是相同的。

有人能告诉我为什么会发生这种情况吗?

0 投票
0 回答
194 浏览

javascript - 有什么方法可以强制 Segment JS 客户端使用 IPv6 而不是 IPv4?

我有一台同时具有 IPv4 和 IPv6 地址的设备。在我的 rails 应用程序中,请求来自 Cloudflare,从中提取的 IP 地址X-Forwarded-For是 IPv6 地址。但是当我从 JS 客户端发送跟踪事件时,它默认使用 IPv4。有什么方法可以让 JS 客户端使用 IPv6 而不是 IPv4?

因为这个问题。我看到来自同一设备的事件来自两个不同的 IP。我尝试将 IPv4 转换为 IPv6。但它们是两个不同的 IP(不是同一 IP 的两个不同表示)。

0 投票
1 回答
57 浏览

iis - 在 W3SVC99 之后不再创建 inetpub 日志

我目前正在将站点迁移到 Windows Server 2016。运行 IIS 10.0.14393.0。

ID 为 99 以上的应用程序池中的所有站点在 C:\inetpub\logs\LogFiles 中没有文件夹。这些站点照常运行,但流量不会导致创建文件夹或日志文件。

ID 介于 1 到 99 之间的站点将继续创建 *.log 文件。

0 投票
1 回答
306 浏览

node.js - 如何通过代理连接识别https客户端

我们开发了一个通过 http/2 协议服务的公司 NodeJS 应用程序,我们需要通过 IP 地址识别客户端,因为服务器需要根据客户端的 IP(基本上是一些关于电话的数据)向客户端发送事件。

我可以成功获取客户端 IP,req.connection.remoteAddress但是有些客户端只能通过我们的代理服务器访问服务器。

我知道x-forwarded-for标头,但这对我们不起作用,因为代理无法修改 ssl 连接中的 http 标头。

所以我虽然可以从客户端获取 IP 并将其发送回服务器,例如在登录过程中。

但是,如果我没记错的话,浏览器不会向 javascript 提供该信息,因此我们需要一种方法来首先获取该信息。

研究它,我发现的唯一选择是从服务器获取,它可以告诉我从哪里到达它的 IP。

当然,通过https我不能因为代理。但是我可以很容易地启用一个 http 服务来服务客户端 IP。

但后来我发现由于“混合活动内容”问题,浏览器会阻止来自 https 服务页面的 http 连接。

我阅读了它,发现我可以得到“混合被动内容”,并且我成功地将垃圾数据下载为图像文件<img>,但是当我尝试使用一个<object>元素做同样的事情时,我得到一个“混合主动内容”块即使在 MDN 文档中也再次发出问题,它说它被认为是被动的。

有什么方法可以通过该(损坏的)<img>标签读取该数据,还是我错过了使<object>元素真正被动的东西?

任何其他实现我们目标的想法也将受到欢迎。

0 投票
1 回答
621 浏览

java - 在存在 XFF 标头的情况下将 `AuthenticationFailureBadCredentialsEvent` 与远程地址相关联

所以我写了这个...

然后意识到我不知道 SpringX-Forwarded-For在安全上下文中设置远程地址时是否考虑了标头。

可以?

或者我如何将AuthenticationFailureBadCredentialsEvent它与它起源的远程地址相关联?

0 投票
1 回答
1073 浏览

apache - 如何在 Apache config 中的 http 请求上使用 x-forward-for 而不是 LB IP 读取 Client-IP

我需要在 httpd conf 中使用真实 IP 而不是 Proxy / Loabalancer IP 的 RewriteCond 语法。我的用例是一个维护页面,应该向所有用户显示,除了我的例外列表中的一些用户,由单独文件中列出的 IP 地址定义。

我已经在 apache 中将 REMOTE_ADDR 设置为 X-Forwarded-For 但我没有得到我需要的点。

我已将 Logformat 配置为

LogFormat "%{X-Forwarded-For}i \"test\" %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined

我的输出是

www.xxx.yyy.zzz "test" 10.0.0.215 - - [22/May/2019:11:09:20 +0200]

但也可能是

www.xxx.yyy.zzz, 10.0.0.12 "test" 10.0.0.215 - - [22/May/2019:11:09:19 +0200]

所以我需要在我的用例中提取的第一个 IP。我的 httpd.conf 中有什么:

我需要的是真实 IP,而不是 REMOTE_ADDR,它是 X-Forward-For 标头信息的第一个条目。我如何才能提取这个并且我可以相信第一个 IP 每次都是客户端 IP?

0 投票
3 回答
3714 浏览

azure - Azure API 管理 - 当 APM 落后于 WAF 时如何获取原始 IP

我们有以下技术堆栈

  • Imperva WAF
  • API 管理
  • WebApp 中的 WebApi

这是当前的实现

  • 客户端 IP 在 WAF 级别进行身份验证
  • WAF IP 在 APIM 被列入白名单
  • APIM IP 在 WebApp 级别被列入白名单

一切正常,如预期的那样。

现在,当我转到 APIM -> 分析 -> 请求时,我看到此处列出了 WAF IP,而不是客户端 IP。所以在这种情况下,我们将无法跟踪谁在使用什么

我知道我们可以选择通过订阅密钥进行跟踪,但这还不够。

有人可以建议如何配置以获得正确的IP吗?

在此处输入图像描述