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

时间:2017-12-16 07:46:16

标签: wordpress

如果有人可以让我知道是否有办法强制用户拥有IP地址以便能够登录wordpress网站,那真的很棒吗?

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

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

2 个答案:

答案 0 :(得分:1)

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

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

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

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

如果你遇到机器人而不是巨魔的问题,像CloudFlare这样的服务可以提供很多帮助,但如果它是真正的用户,我担心技术解决方案无法帮助他们。

答案 1 :(得分:0)

答案简短:

您可以使用wp_authenticate_user或验证过滤器来创建插件(或向站点功能插件添加代码)以检查登录。我这样做是为了检查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来减少巨魔评论。如果这对你来说是一个现实的选择:

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

identify how IP environment variables are being set by your server的脚本。如果这表示&#39; REMOTE_ADDR&#39;包含正确的浏览器IP,然后htaccess检查可能没问题。 ,否则:

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

修改以下评论;的CloudFlare:

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

Cloudflare和IP Env变量:根据配置,您可能会发现&#39; REMOTE_ADDR&#39;包含Cloudflare IP,访问者IP在HTTP_CF_CONNECTING_IP&#39;中。我的网站&#34; on&#34; Cloudflare使用CF认可的主机和两个HTTP_CF_CONNECTING_IP&#39;和&#39; REMOTE_ADDR&#39;包含&#34;真实&#34;访客IP。同样可以使用上面的链接脚本来检查。另请参阅mod_cloudflare

国家/地区识别:Cloudflare可以为您识别访客国家/地区。 CF仪表板 - &gt;网络和开启&#34; IP地理定位&#34 ;;如果启用,那么像我的许多插件将首先检查它,因为它保存了服务器上的处理。

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