在使用php连接mysql数据库时,根据用户输入修改db config是个坏主意吗?

zhte4eai  于 2021-06-20  发布在  Mysql
关注(0)|答案(2)|浏览(218)

抱歉,如果标题不清楚,我在一个项目中,我们正在建设一个android应用程序,连接到mysql数据库来显示一些数据。我们使用php连接到数据库,并使用dbconfig.php,其中包含以下内容:

define("servername", "host");
define("username", "username");
define("password", "password");
define("database",  "database");

由于我们经常连接到托管在不同服务器上的数据库,因此每次运行应用程序之前都必须手动更改dbconfig,因此我们考虑让用户将此信息写入应用程序本身。我想让应用程序发送post请求,然后让dbconfig具有如下内容:

define("servername", $_POST["host"]);
define("username", $_POST["username"]);
define("password", $_POST["password"]);
define("database",  $_POST["database"]);

但是我知道dbconfig应该是安全的,所以我不喜欢动态更改dbconfig,这看起来是个坏主意。实现这一目标的最佳方法是什么?
编辑:这是一个坏主意,另一方面,一个类似的应用程序如何工作?将数据库凭据发送到服务器端语言时是否不需要某种类型的post请求?

jjjwad0x

jjjwad0x1#

如果您处于开发模式,则可以使用不同的主页发送要使用的数据库的名称。。类似的东西

$db = isset($_POST['db']) ? $_POST['db'] : 'default';

switch ($db) {
    case 'db1':
        $servername = 'host1';
        $username   = 'username1';
        $password   = 'password1';
        $database   = 'database1';
        break;
    case 'db2':
        $servername = 'host2';
        $username   = 'username2';
        $password   = 'password2';
        $database   = 'database2';
        break;
    default:
        $servername = 'default_host';
        $username   = 'default_username';
        $password   = 'default_password';
        $database   = 'default_database';
        break;
}

define("SERVERNAME", $servername);
define("USERNAME",   $username);
define("PASSWORD",   $password);
define("DATABASE",   $database);
6ju8rftf

6ju8rftf2#

这真是个坏主意,因为:
您正在通过邮局传递凭证
您没有清理/剥离凭据($\u post内容)
您正在通过http(或其他方式)传输凭据
一种方法是定义一些rest端点并让应用程序调用这些端点。然后,端点可以决定要连接到哪个服务器。

相关问题