Назад | Перейти на главную страницу

Google reCAPTCHA ломает работу phpmyadmin

Добавление / включение (вы называете это) капчи google в конфигурации phpmyadmin заставляет меня застревать на странице входа, токен появляется в URL-адресе, но я не получаю «панель управления», поэтому phpmyadmin становится бесполезным. Включение отчетов об ошибках php не дало мне ничего, никаких сообщений об ошибках, даже в / var / log (apache, mysql и сам php не сообщали об ошибках). Отключение SSL или доступ через виртуальный хост, для которого не настроен SSL, ничего не меняет, присутствует та же проблема.

Теперь единственный способ получить доступ к функциям phpmyadmin - удалить Google captcha (reCAPTCHA) из конфигурации, что по очевидным причинам не подходит.

Больше информации:

Я всегда запускал панель phpmyadmin только на локальном хосте, к которому я подключался через прокси-сервер ssh.

Но теперь мне нужно открыть панель другим пользователям, поэтому после добавления собственного виртуального хоста с 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 virtualhost, чтобы получить доступ к этой панели в случае, если по какой-то причине эта конфигурация не будет работать, но похоже, что даже эта вещь сейчас сломана)

Итак, страница входа в систему работает нормально, но проблема в том, что после попытки входа в любой URL пользователя (даже с localhost virtualhost [старый способ]) в браузере меняется на: https: //somehost.tld/index.php? token = sometoken и я застрял на странице входа.

Поскольку эта панель подключена к серверу mysql и доступна в общедоступном Интернете, я также просматриваю google recaptcha на странице входа, добавляя эти строки в /etc/phpmyadmin/config.inc.php:

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

Когда я прокомментировал эти строки, я получил доступ ко всем функциям phpmyadmin, почему эта капча нарушает все? В настройках google recaptcha у меня есть правильный домен, добавленный к этим ключам captcha.

Хост - Debian 8, я попытался даже запустить dpkg-reconfigure phpmyadmin, чтобы убедиться, что это не просто проблема конфигурации. Это не помогло.

Я нашел решение и теперь чувствую себя немного глупо.

Поскольку на хосте установлен debian 8 (jessie), у меня действительно старые пакеты (это не удивительно, так как это debian).

Похоже, что phpmyadmin не обновлялся в debian, и когда google упал (или не упал, дело в том, что он больше не работает в этой версии) API reCAPTCHA v1 просто перестал работать, и я добавил ключи reCAPTCHA v2 в конфигурацию.

Поэтому мне пришлось загрузить более новую версию phpmyadmin из репозитория debian 9. Я не использовал 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, мне это все равно не нужно ... вероятно.

Я надеюсь, что однажды кто-то отредактирует этот ответ и добавит правильный способ установки пакета из репозитория с более новой версией.

Ответ заключается в том, что вам следует выбирать не reCaptcha v2, а «невидимую reCaptcha». Работал у меня.