为了账号安全,请及时绑定邮箱和手机立即绑定

基于IP地址的授权

基于IP地址的授权

眼眸繁星 2023-10-19 21:23:04
我正在开发一个简单的 Spring Boot RESTful API 用于轮询管理。简而言之,可以创建公共民意调查,其他“用户”可以投票。现在我必须确保每个客户每次投票只投票一次。因为我想防止使用常见的身份验证机制,例如HTTP Basic或JWT,所以我考虑通过客户端 IP 地址进行授权。意味着我在数据库中存储如下实体:public class Vote {    private Long pollId;    private Long choiceId;    private String ipAddress;    ...}使用类似的方法,我可以避免身份验证和帐户管理的需要。这是正确的方法还是有更好的方法来确保每个客户只投票一次?另外如何应对IP欺骗?希望有什么建议。
查看完整描述

1 回答

?
慕桂英3389331

TA贡献2036条经验 获得超8个赞

这是正确的方法还是有更好的方法来确保每个客户只投票一次?

并不真地。每台计算机都有唯一的 IP 地址的想法只部分正确。

事实上,人们拥有不止一种设备(例如电话、工作时的计算机、家里的计算机)。每台设备都可以连接到不同的网络,每个设备都有唯一的 IP。此外,IP 地址变化也相当频繁。断开家庭调制解调器/路由器的连接几分钟,重新连接时您可能会获得新的 IP 地址。这样就可以更改他的家庭IP并重新投票。此外,许多(如果不是大多数)客户端位于NAT设备后面,这意味着它们的 IP 与许多其他用户共享。根据您提出的方案,一旦与您位于同一 NAT 的人投票,其他人就无法投票。最后,用户可以轻松地使用 VPN、TOR 和各种其他技术,基本上可以根据需要多次投票。

另外如何应对IP欺骗?

如果使用 TCP,IP 地址欺骗就不是一件小事了。然而,获取与当前 IP 地址不同的实际 IP 地址非常容易(VPN、TOR 等),而且对此您无能为力。


查看完整回答
反对 回复 2023-10-19
  • 1 回答
  • 0 关注
  • 105 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信