【发布时间】:2016-01-20 22:00:39
【问题描述】:
我有一个配置 .php 文件,其中包含一个数组(它 必须 是一个 PHP 数组),其中包含类似于以下内容:
<?php
return array(
'api_key' => 'e3awY0HoZr0c6L0791Wl2dA3',
'user' => 'Lequis',
'timeout' => '4'
);
这些文件是用户上传的,我想验证用户没有添加任何恶意代码,因为这些文件只包含一个数组,我想验证它实际上只是一个数组
【问题讨论】:
-
为什么要使用数组。让他们改为发送 JSON。
-
@JayBlanchard 是对的。 JSON 会更合适,特别是因为没有什么可以阻止将闭包作为数组中的值添加,因此在用户上传此文件时在场景中不安全。
-
从技术上讲,您可以执行类似的操作 -
$array = include __DIR__ . '/path/to/array.php'; $isArray = is_array($array);- 如果从另一个文件返回的内容是一个数组,它将解析为true。然而,这确实对检查恶意代码没有任何作用,我看不出你如何可靠地缓解这一点,所以我同意@JayBlanchard 和@Adam -
Dito @JayBlanchard JSON 很棒。
-
关于“它必须是一个 PHP 数组”备注:
json_decode($jsondata, true);- 现在它是一个 php 数组(或者,是的,一个标量,但这可能只是作为输入格式错误处理) .
标签: php arrays regex validation security