共享主机上安全的MySQL密码

时间:2014-02-12 10:22:10

标签: javascript php jquery mysql security

我为在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选项。已删除创建,更新和删除选项。

2 个答案:

答案 0 :(得分:1)

密码将存储在您的php文件中,因此即使这些文件位于public_html文件下,也无法通过HTTP请求访问。

在共享主机上,您可能会发现使用相同托管服务器的人可能能够访问您的文件,但我认为您的托管公司已经做了他们必须做的一切,以限制对文件的访问 - 客户。

也就是说,您仍需要使用密码保护您的html文件,否则任何人都可以访问您的数据库信息。

答案 1 :(得分:1)

我不确定这是如何工作的,因为我没有尝试过,但是前几天才知道它,所以我想我会分享。

使用GoDaddy,您可以将主域名指向子目录,因此可以在其之前创建新的文档根目录。这可能不是其他主机的情况,但值得检查。

例如,在根目录中创建一个名为“application”的新目录,在那里上传应用程序的文件并将主域指向那里(您可能需要首先删除域名,然后再次使用指定目录添加域名) 。然后,您可以在新文档根目录之前包含文件(例如您的数据库凭据),现在这些文件对公众不可用,但可供您的应用程序使用。

新结构

数据库凭据:

/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..........);
?>

<强>来源:

http://support.godaddy.com/help/article/4175/specifying-a-new-default-document-root-on-your-hosting-account?pc_split_value=4&countrysite=uk

如果您尝试一下,请告诉我它是怎么回事。