2017-05-26 94 views
-1

我目前正在开发一个网站和一个网络应用程序(不同的代码),将共享相同的数据,并且这些数据存储在数据库中。我做这样说:php和mysql - 这是安全的吗?

我有两个域

域1 - >包含的实用程序(即PHP文件查询DB)

域2 - >包含网站

domain2我发送请求到http://domain1.com/utilities/php/domain2/get_from_db.php这让我回到我需要的结果。

我的恐惧是,这是不安全的,因为这些文件暴露出来?

它曾经是一个空的网站,如果您导航到http://domain1.com/文件结构是可见的。我现在创建了一个空的index.php文件,以便文件结构不再可见。

我的印象这仍然不是很安全,我是否正确?

数据库文件如下:

的config.ini

get_from_db.php

get_from_db.php有这个代码连接,并从数据库中取回数据:

header("Access-Control-Allow-Origin: http://domain2.com"); 
$db = new mysqli($host, $config['username'], $config['password'], $config['dbName'); 

if ($db->connect_errno > 0) { 
    die('Unable to connect to database [' . $db->connect_error . ']'); 
} 

if (mysqli_connect_errno()) { 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
} 


class data 
{ 
    public $id = ""; 
    public $col1 = ""; 
    public $col2 = ""; 
    public $col3 = ""; 
    public $col4 = ""; 
} 

$sql = "SELECT * FROM myDb.myTable"; 
$result = mysqli_query($db, $sql) or die(mysqli_error($db)); 

$obj = array(); 

while ($row = $result->fetch_assoc()) { 
    $col1 = $row['col1']; 
    $col2 = $row['col2']; 
    $col3 = $row['col3']; 
    $col4 = $row['col4']; 

    $e = new cvdata(); 
    $e->col1 = $skills; 
    $e->col2 = $hobbies; 
    $e->col3 = $education; 
    $e->col4 = $experience; 
    array_push($obj, $e); 

} 

echo json_encode($obj); 

现在,我的最后一个问题n是:

这个级别的安全性是否足够? (我的意思是,我知道登录等等,但这是一个非常简单的项目,数据应该可用于每个人尝试使用网站或应用程序,因为它根本不敏感(这只是一些项目的细节,这是所有))

感谢您的帮助,建议或意见

+1

关于部分问题 - 您应该能够配置Web服务器以不列出目录的内容。在Apache中,例如:https://stackoverflow.com/questions/2530372/how-do-i-disable-directory-browsing –

+0

您是否将请求发送到domain2客户端或服务器上运行的脚本的domain1?如果他们来自服务器,则可以在请求中使用简单的密码式身份验证。如果他们来自客户端,则需要更复杂的内容,以防止用户捕获流量并欺骗它。 – Barmar

回答

1

这取决于你的敏感数据是。如果我们谈论的是非常严重的数据,我会尝试使用JWT -esque标记授权系统,但如果它只是一些小问题,比如说。一家餐厅的菜单卡,我将domain2设置为唯一一个能够制作cross-origin HTTP requests并且完成它的人。

什么你不过应该做的是采取config.ini你的可见路径。将其降低到只能通过文件系统访问的级别,但不能通过http://domain2.com/config.ini

+0

访问config.ini的唯一方法是通过http://domain1.com/utilities/php/domain2/config.ini - 我如何从我的可见路径中取出它?哪里是最好的地方把这个文件这样的文件在 服务器? – Nick

+0

在你的文件夹结构中,你应该有一个名为'httpdocs'或'www'的文件夹,或类似的东西。该文件夹中的所有内容均可供公众访问(如果不安全)。我通常做的是在与'www'文件夹相同的级别创建一个名为'config'的文件夹。所以对我来说,通过文件系统可以找到,而不是通过浏览器。 @Nick –

+0

哦,好的,谢谢你的建议 – Nick