我知道这将是各种糟糕的形式,但我很好奇这是否有效。
假设我是一个完全绝望的人,对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="["apple","orange","banana"]"; ?>
这个文件对任何外部用户都是不可见的;它是有效的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 根目录之外。
是的,一般互联网用户无法访问它,但任何有权访问服务器的人仍然可以看到。
因此,如果数据是机密的,则应对其进行加密!