我为在
MySQL数据库上运行的业务客户创建了一个简单的网页,主要由我们的B2C Prestashop电子商店使用.我们正在使用共享主机.该网站主要基于jQuery jTable(jtable.org),旨在显示当前的近似产品库存.
我已经使用了jQuery jTable’starter pack’并为我们的合作伙伴创建了一个简单的前端视图.
它看起来或多或少像jTable教程中的那个:
$(document).ready(function () {
//Prepare jTable
$('#PeopleTableContainer').jtable({
title: 'Product Availability',
actions: {
listAction: 'someconfigfile.php?action=list',
},
fields: {
column1: {
title: 'column1',
width: '70%',
key: true
},
column2: {
title: 'column2',
width: '30%'
}
}
});
//Load person list from server
$('#PeopleTableContainer').jtable('load');
});
因为我只想显示我在MySQL数据库中的数据,所以我准备了只读用户,并且我正在使用他的凭据来访问数据库.正如jQuery脚本中所见,我通过someconfigfile.php和’list’操作访问数据库.
someconfigfile.php包含MySQL连接字符串以及用于在前端视图中填充表的SQL查询.我出于安全目的要做的是将someconfigfile.php放在我的public_html文件夹上的目录中.包含前端的HTML,PHP和CSS文件的文件夹将保留在public_html之下.
我的问题是:
>如果我把密码放在public_html之上,我的密码是否可供任何人访问?我的整个前端代码是上面的jQuery jTable.
>如果我只使用mysql_fetch_assoc($result)获取数据然后打印数组()的json_encode,我是否容易受到SQL注入攻击?用户无法在此处输入任何数据.
编辑:请注意,从jTable CRUD函数我只留下了Read选项.已删除“创建”,“更新”和“删除”选项.
最佳答案 我不确定这是如何工作的,因为我没有尝试过,但是前几天才知道它,所以我想我会分享.
使用GoDaddy,您可以将主域名指向子目录,因此可以在其之前创建新的文档根目录.这可能不是其他主机的情况,但值得检查.
例如,在根目录中创建一个名为“application”的新目录,在那里上传应用程序的文件并将主域指向那里(您可能需要先删除域名,然后再将其添加到指定目录中).然后,您可以在新文档根目录之前包含文件(例如您的数据库凭据),现在这些文件对公众不可用,但可供您的应用程序使用.
新结构
DB凭证:
/home/www/html/someSite/dbCredentials.php
您的网站(主要域名现在指向):
/home/www/html/someSite/application/index.php
例:
在dbCredentials.php中添加凭据:
<?php
$strHostName = “10.10.10.10”;
$strDbName = “dbname”;
$strUserName = “dbuser”;
$strPassword = “xxx***xxx”;
?>
在您的网页上,包括文件并正常使用变量:
<?php
require_once ('/home/www/html/someSite/dbCredentials.php');
$db_found = new PDO("mysql:host=$strHostName..........);
?>
资源:
如果您尝试一下,请告诉我它是怎么回事.