如何编程授权用户进入phpMyAdmin?

zqry0prt  于 2022-11-23  发布在  PHP
关注(0)|答案(2)|浏览(177)

为了在phpMyAdmin中对用户进行授权(当我们的应用程序满足特定条件时),我们创建了一个隐藏的表单(带有预先填写的用户名和密码),并自动(使用JavaScript)提交该表单,因此,我们正在执行以下“技巧”:

if($condition)

   <form> <input user ....><input pass....> <auto-submit>

}

然而,我无法找到一种方法,以编程方式授权用户(不提交表单等)?
我试探着:

$_POST['pma_username']=DB_USER;
$_POST['pma_password']=DB_PASSWORD;
$_POST['server']    =1;
$_POST['target']    ="index.php";
$_POST['token']        ="sample";

include (.........index.php);

但它没有正确授权。

kdfy810k

kdfy810k1#

您可以使用“signon”身份验证方法,该方法旨在允许通过辅助登录门户进行身份验证,或者允许SSO应用程序将凭据传递给phpMyAdmin。
另外,URL查询字符串部分没有直接说明,但使用http://demo.phpmyadmin.net/master/index.php?pma_username=foo&pma_password=bar这样的URL目前是可行的,因此这是您的第二个选择。

xmq68pz9

xmq68pz92#

您只需要两个小步骤就可以为phpmyadmin安装激活sso:

在config.inc.php内部:

$i++;
$cfg['Servers'][$i]['auth_type'] = 'signon';
$cfg['Servers'][$i]['host'] = 'SingleSignOn';
$cfg['Servers'][$i]['SignonSession'] = 'SignonSession';
$cfg['Servers'][$i]['SignonURL'] = 'index.php';
$cfg['Servers'][$i]['LogoutURL'] = 'sso-login.php?logout';

在phpmyadmin的根目录下有一个名为sso-login.php的脚本:

<?php
define("PMA_SIGNON_INDEX", 2);
define('PMA_SIGNON_SESSIONNAME', 'SignonSession');
define('PMA_DISABLE_SSL_PEER_VALIDATION', TRUE);

session_name(PMA_SIGNON_SESSIONNAME);
@session_start();

/* logout request */
if (isset($_GET['logout'])) {
    $params = session_get_cookie_params();
    setcookie(session_name(), '', time() - 86400, $params["path"], $params["domain"], $params["secure"], $params["httponly"] );
    session_destroy();
    header('Location: index.php');
    exit;
}

/* create phpMyAdmin session from response data */
$_SESSION['PMA_single_signon_user'] = "username";
$_SESSION['PMA_single_signon_password'] = "password";
$_SESSION['PMA_single_signon_host'] = defined("PMA_SIGNON_HOST") ? PMA_SIGNON_HOST : "hostname";
@session_write_close();
header('Location: index.php?server=' . PMA_SIGNON_INDEX);

这就是你所需要的

相关问题