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


Saving data as a PHP script / as a .php file? (Purely theoretical)

我知道这将是各种糟糕的形式,但我很好奇这是否有效。

假设我是一个完全绝望的人,对SQL一无所知,所以通常我会将所有数据保存为.txt文件(可悲的是,直到不久前我都是如此)。

我知道,如果有人偶然发现了其中一个.txt文件的URL,他们(显然)能够看到其中的所有数据。所以我想,"如果我将数据保存在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代码,服务器这样做执行它,但它所做的只是声明一个变量。

但是,我可以通过执行以下操作从另一个文件访问数据中记录的数据.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包含我原来的超机密数据数组,随心所欲!

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

编辑:澄清"外部用户" - 任何人访问我的网站。假设我是唯一使用我的服务器的人。

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

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

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

因此,如果数据是机密的,则应对其进行加密!