将数据保存为PHP脚本/作为.php文件? (纯理论)

时间:2013-09-20 19:35:58

标签: php database security

我知道这会是各种不好的形式,但我很好奇这是否会奏效。

假设我是一个完全无望的案例谁不知道关于SQL的事情,所以通常我会将所有数据保存为.txt文件(遗憾的是,这对我来说是真的,直到不那么长 - 前)。

我知道如果有人偶然发现其中一个.txt文件的网址,他们(显然)可以看到其中的所有数据。所以我想,“如果我将数据保存在PHP脚本/文件中会怎么样?如果有人偶然发现它们,他们只会看到一个空白页面,因为服务器会以PHP的形式执行它。”

所以这是我要保存的超级机密数据阵列:

$myArray = array("apple","orange","banana");

我拿这个数组做这个:

file_put_contents("data.php", "<?php \$var=\"" . htmlentities(json_encode($myArray)) . "\"; ?>");

结果是一个名为“data.php”的文件,其中包含一行代码:

<?php $var="[&quot;apple&quot;,&quot;orange&quot;,&quot;banana&quot;]"; ?>

此文件对任何外部用户都不可见;它是有效的PHP代码,服务器就这样执行它,但它只是声明一个变量。

但是,我可以通过以下方式从另一个文件访问data.php中记录的数据:

$importVar = htmlentities(file_get_contents("data.php"));
$importVarBeg = 20;
$importVarEnd = 13;
$importVar = html_entity_decode(substr($importVar, $importVarBeg, strlen($importVar) - ($importVarBeg + $importVarEnd)));
$importVarArray = json_decode(html_entity_decode($importVar));

现在$importVarArray包含我原来的超级机密数据阵列,可以随意使用!

再说一遍,我知道这是一种非常愚蠢的做事方式,但除了愚蠢之外,它实际上是一种存储数据的可行方式,以至于外部用户完全无法访问它吗?

编辑:澄清“外部用户” - 任何人都在点击我的网站。假设我是唯一使用我服务器的人。

2 个答案:

答案 0 :(得分:2)

为什么不让您的Web服务器拒绝对特定目录的请求,将原始数据转储到该目录中?你的脚本仍然可以从那里读取;只是所有外部请求都将被拒绝。

或者,甚至更简单 - 只需将内容存储在您的网络根目录之外。

答案 1 :(得分:1)

是的,一般互联网用户无法访问,但有权访问该服务器的任何人都可以看到。

因此,如果数据是保密的,您应加密它!