昨天我制作了我的第一个连接到数据库的 php 脚本,在 SO 的帮助下,它现在可以工作了!该脚本在我的本地主机上运行。我现在想将脚本添加到实时站点,但我担心安全性。有问题的网站是一个基于 PHP 的 CMS。在这个 CMS 中有一个名为“detail.php”的脚本,用于在特定页面上生成内容。我昨天制作的脚本出现在这个内容中,所以我只是将我的 mysqli(称为“get_vote_date.php”)脚本添加到与 detail.php 相同的目录中
<?php
include("get_vote_date.php")
?>
脚本如下所示:
<?php # script get_vote_date
// This file contains the db info
// This file establishes a mysql connection, connects to the db and then gets the most recent vote date for a particular page (incident_id).
DEFINE ('DB_USER','myname');
DEFINE ('DB_PASSWORD','pass123');
DEFINE ('DB_HOST','localhost');
DEFINE ('DB_NAME','local_sitename');
// make the db connection
$dbc = @mysqli_connect(DB_HOST,DB_USER,DB_PASSWORD,DB_NAME)
OR die ('Could not connect to mysql: ' . mysqli_connect_error());
// Set the encoding
mysqli_set_charset($dbc, 'utf8');
// set the query variable
$query = "SELECT MAX(rating_date)
AS last_date
FROM rating
WHERE incident_id = $incident_id;";
//connect and run the query
$result = mysqli_query($dbc, $query);
echo $result->fetch_object()->last_date;
?>
如您所见,这里有敏感信息 - 数据库连接数据。如果我只是按原样添加脚本就足够了吗?我并不想在这里超越合理的预防措施,我的目标是仅添加具有合理安全性的脚本。
我确实注意到在配置文件中有一个 database.php 文件似乎也保存了连接数据:
$config['default'] = array(
'benchmark' => TRUE,
'persistent' => FALSE,
'connection' => array(
'type' => 'mysqli',
'user' => 'myname',
'pass' => 'somepass123',
'host' => 'localhost',
'port' => FALSE,
'socket' => FALSE,
'database' => 'local_sitename',
),
'character_set' => 'utf8',
'table_prefix' => '',
'object' => TRUE,
'cache' => FALSE,
'escape' => TRUE
);
我的直觉告诉我,调用这些变量比将它们包含在脚本中更安全。是对的吗?我是 PHP 新手,甚至必须研究如何在此处选择数组中的变量。例如,上面调用“pass”的语法是什么?如果这甚至是最好的事情?
我应该让脚本保持原样,还是应该调用 config/database.php 文件中包含的连接详细信息?我是否遗漏了任何其他重要的安全注意事项?