Node.js Express.js如何安全地检索请求IP?

Node.js Express.js如何安全地检索请求IP?,node.js,express,Node.js,Express,因为我不能在一些使用承载令牌发送敏感数据的服务器上使用SSL。我考虑在用户登录时分配一个IP地址,将其附加到数据库中的每个JWT,并在刷新之前检查它(短期访问令牌)。我发现的问题是,我不知道如何在后端安全地检索IP 我已经看到,您可以将app.set('trust proxy',true)设置为express初始化,然后使用req.ip检索ip地址,但显然由于app.set信任代理,这意味着express接收的头可以被攻击者修改,对吗?所以这毫无意义,因为任何人都可以盗用假ip 除此之外,是否还

因为我不能在一些使用
承载令牌发送敏感数据的服务器上使用SSL。我考虑在用户登录时分配一个IP地址,将其附加到数据库中的每个JWT,并在刷新之前检查它(短期访问令牌)。我发现的问题是,我不知道如何在后端安全地检索IP

我已经看到,您可以将
app.set('trust proxy',true)
设置为express初始化,然后使用
req.ip
检索ip地址,但显然由于app.set信任代理,这意味着express接收的头可以被攻击者修改,对吗?所以这毫无意义,因为任何人都可以盗用假ip


除此之外,是否还有其他方法不使用ssl,也不使用aes加密承载令牌?

如CaptEmulation所述,您应该始终在生产服务器上启用ssl,尤其是在对用户进行身份验证时

这就是说,我相信在向服务器发送请求时欺骗IP地址。IP地址用于将数据路由回攻击者,因此它必须是攻击者的ISP分配、VPN分配或代理分配的IP


重要警告:如jfriend00所述,虽然不可能欺骗IP,但如果没有SSL,可能会发起攻击并截获或操纵用户与服务器之间发送的数据。

抱歉,没有“安全”的方法从客户端请求一个IP,我会调查为什么不能使用SSL,而SSL应该在生产环境中始终启用environment@CaptEmulation我想我必须说服老板,如果你不想让某人从连接的中间“监视”数据包(比如ISP中的系统管理员),然后您需要使用SSL。这是您使用SSL的几件事情之一。如果攻击者是中间人,在数据包经过时“嗅探”数据包(就像您的ISP中的某个人可以通过某个路由器做的那样),则您的攻击者场景是不正确的。在这种情况下,IP地址仍然设置为原始用户,但其他人正在监视数据的经过。关于始终启用SSL的第一部分是这里唯一的好答案。