Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
强制Wordpress用户在登录时拥有IP地址?_Wordpress - Fatal编程技术网

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

强制Wordpress用户在登录时拥有IP地址?,wordpress,Wordpress,如果有人能告诉我是否有办法强迫用户拥有IP地址以便登录wordpress站点,那就太好了 我们有隐藏IP地址的麻烦制造者,只有当他们有IP地址时才允许访问是非常好的 如果有人对此有任何想法,您的输入将非常感谢。每个HTTP请求都有一个IP地址,但如果实际用户使用代理,它可能与本地IP地址不同 仅仅通过查看IP地址,您无法真正识别代理。有些人确实会发送一个特殊的头(通常是X-Forwarded-For),让您知道他们代理此请求的用户的IP地址,但其他人不会,您不能强制他们 大多数代理都在数据中心内

如果有人能告诉我是否有办法强迫用户拥有IP地址以便登录wordpress站点,那就太好了

我们有隐藏IP地址的麻烦制造者,只有当他们有IP地址时才允许访问是非常好的


如果有人对此有任何想法,您的输入将非常感谢。

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

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

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

有一些服务可以帮助代理检测(通常是帮助减少欺诈,请参见),但没有一项是免费的


如果你在机器人而不是巨魔方面遇到麻烦,像CloudFlare这样的服务可以帮上大忙,但如果是真正的用户,恐怕如果他们是专门的,技术解决方案就帮不上忙了。

简而言之:

您可以创建一个插件(或向站点功能插件添加代码),使用wp\u authenticate\u 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 );
?>
但这不会有帮助,因为他们很可能会使用匿名代理或VPN;您的服务器将识别有效的VPN/代理IP地址

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

最好在Web服务器上阻止。用于创建ACL列表,例如htaccess(选择允许的国家,选择“htaccess允许”),并粘贴到您的htaccess中。但是,如果使用反向代理NGINX或CDN,可能会导致不正确的阻止/允许

脚本到。如果这表明“REMOTE_ADDR”包含适用于浏览器的正确IP,则htaccess检查可能没问题否则:

您可以安装GeoIP插件并在上面的登录代码段中使用它(它使用作为示例)。它是为内容而设计的,不是为安全而设计的,但它在这里起作用。我是作者,因为这是我唯一熟悉的一本书,我无耻地以它为例。某些插件可能无法与您的服务器配置配合使用(通过上面的脚本链接)。CCA插件检查Cloudflare标识的国家/地区(如果存在),然后检查HTTP_CLIENT_IP、HTTP_X_FORWARDED_for、HTTP_X_REAL_IP’和“REMOTE_ADDR”,这应涵盖大多数配置

编辑以下评论;Cloudflare:

janh就我看到您正在使用的Cloudflare的潜在好处提出了正确的观点。注意事项:

Cloudflare和IP环境变量:根据配置,您可能会发现“远程地址”包含Cloudflare IP,而访客IP位于“HTTP\u CF\u CONNECTING\u IP”中。Cloudflare上的我的站点使用CF批准的主机,“HTTP\u CF\u CONNECTING\u IP”和“REMOTE\u ADDR”都包含“real”访问者IP。同样,可以使用上面的链接脚本检查这一点。另见

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


国家/地区阻止:您可以通过CF仪表板阻止来自特定国家/地区的访客。据我所知,没有选择只允许来自指定国家/地区。有一个白名单选项——我认为这是允许频繁请求到您的服务器,例如通过CF本身

你说“隐藏IP地址”是什么意思$_服务器['REMOTE_ADDR']应始终返回一些值。它可以是真实IP地址,也可以是某个代理IP地址。但它不应该是空的。嗨,在我们的情况下,是的,不知怎么他们进入了网站而没有透露IP,不知道如何进入。嗨,Scytale谢谢你的全面投入,这真的很棒。我将和你的一些想法玩一玩。是的,我希望,一旦我们强迫他们拥有某种描述的IP,他们会使用VPN。在这种情况下,阻止IP并不理想,因为其他用户可能也在使用VPN。不过,我会同意你的一些建议,希望其中一个能起到作用。再次感谢:)嗨,用户nnnn谢谢你的反馈。由于您正在使用Cloudflare,我已将其添加到我的答案中。您好,谢谢您的反馈,非常好。好的,我们正在使用Cloudflare,所以我将研究如何使用它。
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*/
}