Google reCAPTCHA 破坏了 phpmyadmin

Google reCAPTCHA 破坏了 phpmyadmin

在 phpmyadmin 配置中添加/启用(您说的)google captcha 让我卡在登录页面上,令牌出现在 URL 中,但我没有看到“控制面板”,因此 phpmyadmin 变得有点无用。打开 php 错误报告没有给我任何东西,根本没有错误消息,甚至在 /var/log 中也是如此(apache 和 mysql 以及 php 本身没有报告任何错误)。关闭 SSL 或通过未配置 SSL 的虚拟主机访问不会改变任何事情,存在相同的问题。

现在访问 phpmyadmin 功能的唯一方法是从配置中删除 google captcha (reCAPTCHA),但由于显而易见的原因,这不是一个选项。

更多信息:

我始终只在通过 ssh 代理连接的本地主机上运行 phpmyadmin 面板。

但是现在我需要向其他用户公开该面板,因此在使用 SSL 添加其自己的虚拟主机后,它如下所示:

<VirtualHost x.x.x.x:443>
    ServerName somehost.tld
    DocumentRoot /usr/share/phpmyadmin
    #Alias /phpmyadmin /usr/share/phpmyadmin

    ServerSignature Off
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/somehost.tld/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/somehost.tld/privkey.pem

    <Directory /usr/share/phpmyadmin>
        Options FollowSymLinks
        DirectoryIndex index.php

        <IfModule mod_php5.c>
            <IfModule mod_mime.c>
                AddType application/x-httpd-php .php
            </IfModule>
            <FilesMatch ".+\.php$">
                SetHandler application/x-httpd-php
            </FilesMatch>

            php_flag magic_quotes_gpc Off
            php_flag track_vars On
            php_flag register_globals Off
            php_admin_flag allow_url_fopen Off
            php_value include_path .
            php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp
            php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext/:/usr/share/javascript/:/usr/share/php/tcpdf/
        </IfModule>

    </Directory>

    # Authorize for setup
    <Directory /usr/share/phpmyadmin/setup>
        <IfModule mod_authz_core.c>
            <IfModule mod_authn_file.c>
                AuthType Basic
                AuthName "phpMyAdmin Setup"
                AuthUserFile /etc/phpmyadmin/htpasswd.setup
            </IfModule>
            Require valid-user
        </IfModule>
    </Directory>


    # Disallow web access to directories that don't need it
    <Directory /usr/share/phpmyadmin/libraries>
        Require all denied
    </Directory>
    <Directory /usr/share/phpmyadmin/setup/lib>
        Require all denied
</Directory>


    BrowserMatch "MSIE [2-6]" \
    nokeepalive ssl-unclean-shutdown \
    downgrade-1.0 force-response-1.0

    # MSIE 7 and newer should be able to use keepalive
    BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown
</VirtualHost>

(我没有触碰 localhost 虚拟主机文件以便能够访问该面板,以防由于某种原因此配置不起作用,但现在看来这个东西已经坏了)

因此,登录页面工作正常,但问题是,在尝试登录后任何用户(甚至来自 localhost 虚拟主机 [以前的旧方式])浏览器中的 url 更改为:https://somehost.tld/index.php?token=sometoken我一直停留在登录页面。

由于此面板连接到 mysql 服务器并暴露在公共互联网中,因此我还通过在 /etc/phpmyadmin/config.inc.php 中添加以下几行在登录页面上打开 google recaptcha:

$cfg['CaptchaLoginPublicKey'] = 'mypublickey'
$cfg['CaptchaLoginPrivateKey'] = 'myprivatekey'

当我注释掉这些行时,我可以访问 phpmyadmin 的所有功能,为什么这个验证码会破坏一切?在 google recaptcha 设置中,我已将正确的域添加到此验证码密钥中。

主机是 Debian 8,我甚至尝试运行 dpkg-reconfigure phpmyadmin 来确保这不仅仅是配置问题。但这没有帮助。

答案1

我找到了一个解决方案,但现在我感觉自己有点愚蠢。

由于主机上安装了 debian 8(jessie),因此真的旧软件包(这并不奇怪,因为它是 Debian)。

看来 phpmyadmin 没有在 debian 中更新,并且当 google 放弃(或者没有放弃,重点是它在这个版本中不再起作用)reCAPTCHA v1 API 时它就停止工作了,并且我已经将 reCAPTCHA v2 密钥添加到配置中。

所以我不得不从 debian 9 repo 下载较新版本的 phpmyadmin。我很久没用过 debian 了,所以我不知道如何从较新版本添加存储库,并告诉 apt 从给定的存储库下载给定的包及其依赖项,就像在 ArchLinux 或 SUSE 中一样。解决我知识不足的方法是以下步骤:

wget http://ftp.cz.debian.org/debian/pool/main/p/phpmyadmin/phpmyadmin_4.6.6-4_all.deb
dpkg -i ./phpmyadmin_4.6.6-4_all.deb

dpkg 抛出有关未满足依赖关系的错误,并且它未配置该包,但面板现在无需进行任何其他调整即可工作...好吧..我在面板中收到一些关于“phpMyAdmin 配置存储未完全配置,一些扩展功能已被停用”的警告。

但是由于我使用该面板仅与 MySQL 交互并添加/删除 SQL 用户,所以我实际上并不需要它......可能。

我希望有一天有人会编辑这个答案并添加从具有较新版本的存储库安装软件包的正确方法。

答案2

答案是,您不应该选择 v2 reCaptcha,而应该选择“隐形 reCaptcha”。对我来说很管用。

相关内容