[英]While connecting to a MySql database with PHP, is it a bad idea to modify the db config based on user input?
抱歉,如果标题不清楚,我在一个项目中,我们正在构建一个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请求将数据库凭证发送到服务器端语言吗?
这是个坏主意,因为:
一种方法是定义一些REST端点,然后让您的应用调用这些端点。 然后,端点可以决定要连接到哪个服务器。
如果您处于开发模式,则可以使用其他主页来发送要使用的数据库名称。
$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);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.