使用客户端IP的会话状态

赖安德夫

我正在尝试使用建议的在客户端阻止cookie时维护会话状态的方法来确定是否存在安全漏洞。

通常,我将UUID存储在客户端cookie中,如果UUID与数据库中存储的内容匹配,则会自动登录。但是,如果客户端阻止了cookie,那么我将无法在其计算机上访问UUID,因此必须决定使用其IP地址并以这种方式与数据库进行匹配。

我使用以下方法确定IP地址:

String ip = request.getHeader("X-FORWARDED-FOR");
if(ip == null) {
    ip = request.getRemoteAddr();
}

我在这方面有点绿色,但是我认为这种方法可能存在安全漏洞。例如,如果用户通过公共wifi网络(在咖啡店,飞机场,酒店等)访问应用程序,它将存储公共ip并将其帐户与该ip相匹配。除非他们特别记得注销,否则使用同一IP在其后进入的任何人都将具有对他们帐户的完整访问权限。我该如何预防?我不完全反对使用另一种方法来阻止Cookie,除了匹配ip之外。我只是不确定除了cookie不可用时完全禁止用户登录之外,他们还可能采用其他什么方法。这是唯一真正安全的方法吗?

更新

根据TJ Crowders的评论,最近的统计数据表明,实际有2%的用户阻止了cookie。由于多种原因,我选择依赖Cookie并在由于Cookie被阻止而无法管理会话状态时显示警告。

TJ人群

...但是我认为这种方法可能存在安全漏洞。例如,如果用户通过公共wifi网络(在咖啡店,机场,酒店等)访问该应用程序...

不仅如此。在家中拥有无线宽带的人们似乎都来自同一个IP,因此,如果两个在一起生活的人都希望同时使用您的站点(也许一个人向另一个人推荐了您的站点),他们就会发生冲突。

如果您不能使用cookie,则可以使用旧的J2EE技术​​将会话ID放入每个URL中。如果您已经在使用J2EE,则可以使用对此的内置支持(HttpServletResponse#encodeURL;jsessionid=token在URL上使用)如果不是这样,使用查询字符串参数来实现该技术就足够简单了。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用PHP跟踪其他客户端(其他会话)的文件上传状态

来自分类Dev

我可以使用Chrome DevTools在客户端查看会话状态值吗?

来自分类Dev

Flask客户端会话是无状态的吗?

来自分类Dev

如何使RDP会话在客户端保持活动状态?

来自分类Dev

Flask客户端会话是无状态的吗?

来自分类Dev

在屏幕会话中访问SSH客户端IP地址

来自分类Dev

如何在ssh会话中获取客户端ip?

来自分类Dev

在屏幕会话中访问SSH客户端IP地址

来自分类Dev

找出使用的客户端IP

来自分类Dev

使用 PHP 获取客户端 IP

来自分类Dev

与http客户端的会话

来自分类Dev

会话状态是存储在客户端还是服务器端?

来自分类Dev

如何伪造验证会话ID,IP地址和HTTP客户端的Rails会话

来自分类Dev

电子客户端IP

来自分类Dev

如何使用php获取客户端公共IP地址?

来自分类Dev

如何使用Restify从请求对象获取客户端IP?

来自分类Dev

使用ServerEndpoint时获取客户端IP地址

来自分类Dev

使用IPAddress.Any获取客户端的IP

来自分类Dev

如何使用aiohttp获取客户端的IP地址

来自分类Dev

如何使用LogBack记录客户端IP地址

来自分类Dev

如何使用php获取客户端公共IP地址?

来自分类Dev

如果使用HTTPS,如何获取客户端的IP地址?

来自分类Dev

使用 wsDualHttpBinding 在 WCF 中获取客户端 IP 地址

来自分类Dev

客户端的客户端IP是什么

来自分类Dev

使客户端JWT会话无效

来自分类Dev

使用C#的TCP / IP服务器/客户端多连接并接收客户端的公共IP地址

来自分类Dev

Delphi-使用Indy检查客户端状态的简单TCP客户端/服务器

来自分类Dev

Delphi-使用Indy检查客户端状态的简单TCP客户端/服务器

来自分类Dev

C#-从客户端检查TCP / IP套接字状态

Related 相关文章

热门标签

归档