Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 在jwt关闭的情况下,在我的API中保存用户的公共IP是否可行?_Node.js_Api_Security_Jwt_Ip - Fatal编程技术网

Node.js 在jwt关闭的情况下,在我的API中保存用户的公共IP是否可行?

Node.js 在jwt关闭的情况下,在我的API中保存用户的公共IP是否可行?,node.js,api,security,jwt,ip,Node.js,Api,Security,Jwt,Ip,我在考虑如何保护我的API,防止令牌盗窃影响我的用户。我认为如果攻击者设法窃取令牌并被具有不同IP的用户使用,那么保存我的用户IP将是一个好主意。我将使用中间件或函数来验证它是否在用户ip列表中,如果不在,我将拒绝他的令牌,然后在前端请求您的凭据。如果凭据正确,我将覆盖IP或将其存储为新的。我不知道您所说的“是否可行”到底是什么意思。是的,如果你愿意,你可以做 但是,依赖于用户的IP地址不变,并在每次IP地址发生变化时强制用户重新验证,这存在很多潜在问题 1。移动设备四处移动。当移动设备在蜂窝网

我在考虑如何保护我的API,防止令牌盗窃影响我的用户。我认为如果攻击者设法窃取令牌并被具有不同IP的用户使用,那么保存我的用户IP将是一个好主意。我将使用中间件或函数来验证它是否在用户ip列表中,如果不在,我将拒绝他的令牌,然后在前端请求您的凭据。如果凭据正确,我将覆盖IP或将其存储为新的。

我不知道您所说的“是否可行”到底是什么意思。是的,如果你愿意,你可以做

但是,依赖于用户的IP地址不变,并在每次IP地址发生变化时强制用户重新验证,这存在很多潜在问题

1。移动设备四处移动。当移动设备在蜂窝网络上移动时,其IP地址可以合法地更改

2。连接到不同网络(如WiFi)的移动设备。当您的手机从车内和手机网络变为家庭和WiFi网络时,连接到您的服务时,该手机的IP地址将发生变化

3。NAT在防火墙后面。几乎每个用户(甚至家庭用户)都在通过NAT设备,您看到的IP地址是网关的IP地址,而不是实际用户的IP地址。在较大的公司网络中,网关IP地址可能并不总是相同的。而且,多个不同的用户可能来自同一网关IP地址,因此用户和IP地址之间不一定存在一对一的对应关系


一般来说,您应该只对传输JWT的所有连接使用https,这样中间人攻击窃取JWT的风险就很小了。用户自己需要保护自己的JWT本地存储

许多现代服务使用的一种方法是记录本地设备的一组特征,这些特征甚至可能包括一些其他cookie以及一些其他浏览器特征的存在。然后,每当指纹发生重大变化时,就需要重新验证。你会看到许多银行和航空公司的网站都在做类似的事情。这里的想法是,即使凭证被盗,当攻击者使用凭证时,指纹也不太可能匹配