如何跟踪 IPv4 地址以防止多票投票?
How can I track IPv4 addresses to prevent multivoting?
我正在创建一个网站,我正在尝试实施一项功能来防止多票投票。我目前实现它的方式似乎在一定程度上起作用,但似乎用户 IPv6 IP 地址每天都在变化,允许每个用户在另一天进行另一次投票。
这是我目前记录 IP 的方式。
这就是我在 PHP 中获取用户 IP 的方式:
$user_ip = getenv('HTTP_CLIENT_IP')?:
getenv('HTTP_X_FORWARDED_FOR')?:
getenv('HTTP_X_FORWARDED')?:
getenv('HTTP_FORWARDED_FOR')?:
getenv('HTTP_FORWARDED')?:
getenv('REMOTE_ADDR');
下面是我在数据库中记录每张选票的方式:
$check_if_vote = mysqli_query($con, "SELECT * FROM voting_log WHERE voter_ip = '".$user_ip."' AND voted_user = '".$search."'");
if(mysqli_num_rows($check_if_voted) <= 0) {
mysqli_query($con, "INSERT INTO voting_log (voter_ip, voted_user, votetype) VALUES ('".$user_ip."', '".$search."', 0);");
} else {
echo "You have already voted for this user";
}
有没有办法只跟踪 IPv4 IP,因为它们似乎永远不会改变?
如果您愿意在混合中添加一点 javascript,请考虑在您网站的前端添加一些代码来为客户端添加指纹。将其与请求一起发送,如果您正在处理 IPv6,请改用指纹。
This question 有多个很好的答案,详细介绍了如何实现这一目标。
它仍然不是万无一失的,但是 运行 进入同时拥有 IPv6 并且足够聪明以规避您在客户端选择的唯一标识方法的用户的机会可能足够低在你的情况下是可以接受的。
我正在创建一个网站,我正在尝试实施一项功能来防止多票投票。我目前实现它的方式似乎在一定程度上起作用,但似乎用户 IPv6 IP 地址每天都在变化,允许每个用户在另一天进行另一次投票。
这是我目前记录 IP 的方式。
这就是我在 PHP 中获取用户 IP 的方式:
$user_ip = getenv('HTTP_CLIENT_IP')?:
getenv('HTTP_X_FORWARDED_FOR')?:
getenv('HTTP_X_FORWARDED')?:
getenv('HTTP_FORWARDED_FOR')?:
getenv('HTTP_FORWARDED')?:
getenv('REMOTE_ADDR');
下面是我在数据库中记录每张选票的方式:
$check_if_vote = mysqli_query($con, "SELECT * FROM voting_log WHERE voter_ip = '".$user_ip."' AND voted_user = '".$search."'");
if(mysqli_num_rows($check_if_voted) <= 0) {
mysqli_query($con, "INSERT INTO voting_log (voter_ip, voted_user, votetype) VALUES ('".$user_ip."', '".$search."', 0);");
} else {
echo "You have already voted for this user";
}
有没有办法只跟踪 IPv4 IP,因为它们似乎永远不会改变?
如果您愿意在混合中添加一点 javascript,请考虑在您网站的前端添加一些代码来为客户端添加指纹。将其与请求一起发送,如果您正在处理 IPv6,请改用指纹。
This question 有多个很好的答案,详细介绍了如何实现这一目标。
它仍然不是万无一失的,但是 运行 进入同时拥有 IPv6 并且足够聪明以规避您在客户端选择的唯一标识方法的用户的机会可能足够低在你的情况下是可以接受的。