gpt4 book ai didi

java - 基于IP地址的授权

转载 作者:行者123 更新时间:2023-12-02 01:17:09 26 4
gpt4 key购买 nike

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

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

public class Vote {

private Long pollId;
private Long choiceId;
private String ipAddress;

...
}

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

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

最佳答案

Is this the right approach or are there better ones to ensure each client votes just once?

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

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

Also how to deal with IP spoofing?

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

关于java - 基于IP地址的授权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58375845/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com