【问题标题】:NGINX restrict admin area on wordpress but allow wp-admin/admin-ajax.php?NGINX 限制 wordpress 上的管理区域但允许 wp-admin/admin-ajax.php?
【发布时间】:2021-03-12 16:55:42
【问题描述】:

我有几个网站使用以下代码来限制管理区域。到目前为止还没有找到比这更好的解决方案。

##> COMMENT - WordPress Admin Area Passwords 
location ^~ /wp-admin/ { 
auth_basic "Restricted Access"; 
auth_basic_user_file /home/bea/panel/security/.htpasswd; 

location ~ \.php$ { 
include snippets/fastcgi-php.conf; 
fastcgi_pass unix:/var/run/php/php7.3-fpm-website123.com.sock; 
} 
} 

我们正在使用一个插件,该插件允许用户查看和建设中的页面,但提供登录以允许网站所有者在网站建设期间查看他们的网站。看看下面的图片。

正如您在下面看到的,系统会提示用户填写密码以访问网站,但也会提示他们填写用户名和密码以访问管理区域。仅当用户输入密码以访问该网站并单击“访问该网站”时才会出现此弹出窗口。

联系插件创建者后,他们建议排除wp-admin/admin-ajax.php

或者有更好的做法可以遵循。我不时注意到某些插件需要访问管理区域才能正常运行。

我可能已经找到了解决方案:

##> COMMENT - WordPress 管理区密码,通常用于 LIVE 网站

location /wp-admin {
        location ~ /wp-admin/admin-ajax.php$
        {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php7.3-fpm-WEBSITE.tv.com.sock;
        }

        location ^~ /wp-admin/ {
        auth_basic "Restricted Access";
        auth_basic_user_file /home/user/panel/security/._htpasswd;
        }
        location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php7.3-fpm-WEBSITE.tv.sock;
        }
}

我只是希望有人验证上面的代码并检查它是否安全?我仍然愿意提供赏金来验证其安全级别。

【问题讨论】:

标签: security nginx nginx-config wordpress-admin


【解决方案1】:

玩了几个小时后,我找到了一个可行的解决方案,但我不确定它是否安全?

location /wp-admin {
        location ~ /wp-admin/admin-ajax.php$
        {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php7.3-fpm-WEBSITE.tv.com.sock;
        }

        location ^~ /wp-admin/ {
        auth_basic "Restricted Access";
        auth_basic_user_file /home/user/panel/security/._htpasswd;
        }
        location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php7.3-fpm-WEBSITE.tv.sock;
        }
}

但这是一个可行的解决方案

【讨论】:

    【解决方案2】:

    我认为像下面这样的东西应该可以为你完成这项工作

    location ^~ /wp-admin/ {
       auth_basic "Restricted Access";
       auth_basic_user_file /home/bea/panel/security/.htpasswd;
    
       location ~ \.php$ {
          include snippets/fastcgi-php.conf;
          fastcgi_pass unix:/var/run/php/php7.3-fpm-website123.com.sock;
       }
    }
    
    location = /wp-admin/admin-ajax.php {
       include snippets/fastcgi-php.conf;
       fastcgi_pass unix:/var/run/php/php7.3-fpm-website123.com.sock;
    }
    

    【讨论】:

    • 你好。我试了一下,但不幸的是它不起作用。此外,当我登录后端并尝试更改插件上的某些功能时,特别是使用 admin-ajax.php 的密码。它只是出现了一个错误。
    • 我认为必须是location /wp-admin/admin-ajax.php { allow all; }
    • 我没有得到双重密码。但是我收到一条错误消息,指出发生了错误!请稍后再试。这告诉我它没有与 admin-Ajax.php 正确通信。
    • 尝试将全部允许添加到location = 以阻止
    • 对不起,是的,我已经有了。还是不行。
    猜你喜欢
    • 1970-01-01
    • 2020-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多