问:因此,我一直在本地主机上使用自己的“测试驱动器”数据库。但是现在是时候进行真正的交易了。是否有任何“安全”协议可以从网站访问/连接到它?数据库管理员已经为我设置了一个测试用户帐户设置,但是我更担心应该采取的预防措施。我正在使用PHP
答:检查您的源代码的人看不到PHP脚本的源代码,因此通常在PHP中DB密码是相当安全的,除非从包含该信息的文件中抛出错误,否则有可能将其打印在错误中或无障碍。
尽管本文在将密码存储在根文件夹之外有一个很好的解释,并且大致是我自己做的(根据服务器的配置来进行或进行一些更改):
我的网络服务器的根目录是“ / localhost / public_html /”,我创建了一个文件夹,例如“ / localhost / private /”,该位置在外部无法被其他人访问,因为它的URL不在根目录文件夹的上方。
我将config.ini放在“ /localhost/private/config.ini”
config.ini包含数据库登录凭据:
[数据库]
服务器名=本地
用户名=管理员
密码=密码
dbname = db_main
然后,我在根目录中创建一个php函数,例如在“ /localhost/public_html/includes/dbconnect.php”中说
dbconnect.php的内容:
<?php
function db_connect () {
//将连接定义为静态变量,以避免多次连接静态$ connection ; //如果尚未建立连接,请尝试并连接到数据库if (!isset ($ connection )){ //将配置作为数组加载。使用配置文件的实际位置$ config = parse_ini_file ('../private/config.ini' ); $ connection = mysqli_connect ($ config [ '服务器名' ],$ config
[ 'username' ],$ config [ 'password' ],$ config [ 'dbname' ]);
} //如果连接不成功,处理错误,如果($连接===假){ //处理错误-通知管理员身份登录到一个文件,显示错误屏幕等回报mysqli_connect_error (); } return $ connection ; } //连接到数据库$ connection = db_connect (); //检查连接是否(($ connection- >
connect_error ) {
die (“连接失败:” 。$ connection- > connect_error ); } ?>
如您所见,我将config .ini文件的值从服务器位置“ ../private/config.ini”解析为数组$ config,该位置只能由localhost访问,并且无法通过网址。
每当我想连接到数据库时,我只需包含包含该功能的dbconnect.php文件,
<?php
require_once ('./includes/dbconnect.php' );
?>
对于查询,我从dbconnect()函数调用变量$ connection,例如:
<?php
$ sql = “从文章中选择ID,标题,标题,日期,部分,内容” ;
$ result = $ connection- >查询($ sql );
?>
通过所有这些操作,我的数据库登录凭据位于网站根目录的范围之外,并且如果您遇到SQL或PHP错误,它将仅显示变量名称,而不显示包含登录凭据的值。