强制Wordpress用户登录时拥有IP地址?

问题描述 投票:0回答:2

如果有办法迫使用户拥有一个IP地址以便能够登录wordpress网站,那真的很棒吗?

我们有麻烦制造者使用隐藏的IP地址,只有拥有IP才能授予访问权限。

如果有人对此有任何想法,您的意见将非常感激。

wordpress
2个回答
0
投票

简短的回答:

您可以使用wp_authenticate_user或authenticate过滤器创建插件(或向站点功能插件添加代码)以检查登录。我这样做是为了检查IP访客国家:

<?php
/* Plugin Name: Login Validation XYZ */
function mysite_authenticate($user, $password) {
  //  if ( some ip check is failed) { e.g.
  //  if (cca_visitor_NOT_from('US,CA')) { /* or*/
  if ( CCAgeoip::get_visitor_country_code() != 'US') { // bounce if not from US (see below)
    remove_action('authenticate', 'wp_authenticate_username_password', 20);
    $user = new WP_Error( 'denied', __("<b>ERROR</b>: some error msg") );
  }
  return $user;
}
add_filter( 'wp_authenticate_user', 'mysite_authenticate', 10, 3 );
?>

但是在注册时可能更有意义(registration errors过滤器吗?)或者如果您只对来自特定国家/地区的访问者感兴趣,那么您可以通过网络服务器(例如.htaccess)更早地检查 - 更多和下面的注意事项。

答案很长:

看来你在谈论巨魔手动输入滥用评论而不是垃圾邮件和RPC。

您可以验证这样的IP:

if ($someIPvar != '127.0.0.1' && filter_var($someIPvar, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE) !== false) {
 /* then its valid & not localhost or a private range*/
}

但这无济于事,因为他们有机会使用匿名代理或VPN;并且您的服务器将识别有效的VPN /代理IP地址。

如果(很大的话)所有合法访问者来自少数几个国家,那么阻止您的网站与其他人(htaccess)或限制评论(WP登录)可以通过阻止那些使用您所在国家/地区以外的IP的代理/ VPN来减少巨魔评论。如果这是一个现实的选择,那么:

理想情况下阻止在webserver上。使用countryipblocks.net创建ACL列表,例如对于htaccess(选择允许的国家/地区,选择“htaccess allow”)并粘贴到您的htaccess中。但是,如果使用反向代理NGINX或CDN,则可能导致阻止/允许错误。

identify how IP environment variables are being set by your server写剧本。如果这表明“REMOTE_ADDR”包含您的浏览器的正确IP,那么htaccess检查可能没问题。除此以外:

您可以安装GeoIP插件并在上面的登录代码片段中使用它(它使用Category Country Aware Plugin作为示例)。它专为内容而非安全而设计,但在此处完成工作。我是作者,因为它是我熟悉的唯一一个我无耻地使用的例子。某些插件可能无法与您的服务器配置一起使用(通过上面的脚本链接)。 CCA插件检查Cloudflare标识的国家(如果存在),然后检查HTTP_CLIENT_IP','HTTP_X_FORWARDED_FOR','HTTP_X_REAL_IP'和'REMOTE_ADDR',它们应涵盖大多数配置。

编辑以下评论; CloudFlare的:

janh对我看到你正在使用的Cloudflare的潜在好处提出了一个有效的观点。注意事项:

Cloudflare和IP Env变量:根据配置,您可能会发现'REMOTE_ADDR'包含Cloudflare IP,访问者IP位于'HTTP_CF_CONNECTING_IP'。我的网站“on”Cloudflare使用CF认可的主机,并且“HTTP_CF_CONNECTING_IP”和“REMOTE_ADDR”包含“真实”访问者IP。同样可以使用上面的链接脚本来检查。另见mod_cloudflare

国家/地区识别:Cloudflare可以为您识别访客国家/地区。 CF仪表板 - >网络并打开“IP地理位置”;如果启用,那么像我的许多插件将首先检查它,因为它节省了服务器上的处理。

国家/地区阻止:您可以通过CF控制台阻止来自各个指定国家/地区的访问者没有选项(据我所知)仅允许来自指定国家/地区。有一个白名单选项 - 我认为这是允许频繁请求您的服务器,例如由CF本身。


1
投票

每个HTTP请求都有一个IP地址,但如果他使用代理,则可能与实际用户的本地IP地址不同。

通过查看IP地址,您无法真正识别代理。有些人会发送一个特殊的标题(通常是X-Forwarded-For)来让你知道他们代理这个请求的用户的IP地址,但是其他人不会,你不能强迫他们。

大多数代理都在数据中心内运行,因此您可以对IP进行whois查找并阻止IP服务器提供商(特别是云计算,因为它相对便宜)。

有一些服务可以帮助代理检测(通常是为了帮助减少欺诈,请参阅maxmindip2location),但它们都不是免费的。

如果你在使用机器人而不是巨魔时遇到麻烦,像CloudFlare这样的服务可以提供很多帮助,但如果它是真正的用户,我担心技术解决方案如果专用就无济于事。

© www.soinside.com 2019 - 2024. All rights reserved.