Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/247.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP函数,用于转义字符串以写入可执行PHP文件_Php_Security - Fatal编程技术网

PHP函数,用于转义字符串以写入可执行PHP文件

PHP函数,用于转义字符串以写入可执行PHP文件,php,security,Php,Security,我需要处理不受信任的输入,这些输入将写入服务器执行的文件,config.php,如下所示: $config['key'] = "Value"; 我想这样做,用户可以提交一个表单,该表单将写入config.php。显然,将该值存储在数据库中更有意义,但我不能这样做,因为这是一个遗留系统 我找到了函数addslashes和serialize,但我不确定它们对于这个用例是否安全。我想我也可以使用hex2bin/bin2hex 我想到的另一个黑客是使用HEREDOCs: $x = <<&l

我需要处理不受信任的输入,这些输入将写入服务器执行的文件,
config.php
,如下所示:

$config['key'] = "Value";
我想这样做,用户可以提交一个表单,该表单将写入
config.php
。显然,将该值存储在数据库中更有意义,但我不能这样做,因为这是一个遗留系统

我找到了函数
addslashes
serialize
,但我不确定它们对于这个用例是否安全。我想我也可以使用
hex2bin/bin2hex

我想到的另一个黑客是使用HEREDOCs:

$x = <<<PASSWORD

untrusted input here" echo "BOOM!";

PASSWORD;

$x=Base64内容。任何base64'ed都不可能是有效的PHP代码

&
var\u export
就可以了。将运行时可写配置存储在PHP文件中是个坏主意。即使您的PHP语法输出完全正确,您仍然必须为web用户提供对可执行文件的运行时写访问权限,这意味着任何文件上载漏洞都将升级为执行任意代码漏洞。如果不能存储到数据库,至少要存储到一个可以从PHP读取的平面非可执行文件(如文本或JSON)。