基于IP地址的授权

我正在开发一个简单的 Spring Boot RESTful API 用于轮询管理。简而言之,可以创建公共民意调查,其他“用户”可以投票。


现在我必须确保每个客户每次投票只投票一次。因为我想防止使用常见的身份验证机制,例如HTTP Basic或JWT,所以我考虑通过客户端 IP 地址进行授权。意味着我在数据库中存储如下实体:


public class Vote {


    private Long pollId;

    private Long choiceId;

    private String ipAddress;


    ...

}

使用类似的方法,我可以避免身份验证和帐户管理的需要。


这是正确的方法还是有更好的方法来确保每个客户只投票一次?另外如何应对IP欺骗?希望有什么建议。


眼眸繁星
浏览 107回答 1
1回答

慕桂英3389331

这是正确的方法还是有更好的方法来确保每个客户只投票一次?并不真地。每台计算机都有唯一的 IP 地址的想法只部分正确。事实上,人们拥有不止一种设备(例如电话、工作时的计算机、家里的计算机)。每台设备都可以连接到不同的网络,每个设备都有唯一的 IP。此外,IP 地址变化也相当频繁。断开家庭调制解调器/路由器的连接几分钟,重新连接时您可能会获得新的 IP 地址。这样就可以更改他的家庭IP并重新投票。此外,许多(如果不是大多数)客户端位于NAT设备后面,这意味着它们的 IP 与许多其他用户共享。根据您提出的方案,一旦与您位于同一 NAT 的人投票,其他人就无法投票。最后,用户可以轻松地使用 VPN、TOR 和各种其他技术,基本上可以根据需要多次投票。另外如何应对IP欺骗?如果使用 TCP,IP 地址欺骗就不是一件小事了。然而,获取与当前 IP 地址不同的实际 IP 地址非常容易(VPN、TOR 等),而且对此您无能为力。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java