在我的previous question on this topic中,如果删除动态变量并将其替换为静态变量(如下所示),会产生什么影响...
$source = 'http://mycentralserver.com/protected/myupdater.zip';
为方便起见,我已将下面的代码包含在内......
<?php
// TEST.PHP
$source = 'http://mycentralserver.com/protected/myupdater.zip';
$target = '.';
$out_file = fopen(basename($source), 'w');
$in_file = fopen($source, 'r');
while ($chunk = fgets($in_file)) {
fputs($out_file, $chunk);
}
fclose($in_file);
fclose($out_file);
$zip = new ZipArchive();
$result = $zip->open(basename($source));
if ($result) {
$zip->extractTo($target);
$zip->close();
}
?>
答案 0 :(得分:1)
您至少应该使用SHA-1对zip进行哈希处理并根据摘要进行检查,以确保它没有更改。这些摘要应该非常难以替代。
我仍然认为自动更新有点不确定。
答案 1 :(得分:0)
PHP 5.2.6及更早版本的漏洞允许通过Zip的extractTo()-method写入任意位置。
请参阅:http://www.securityfocus.com/bid/32625
因此,如果zip的内容不可靠,则必须使用PHP 5.2.7或更新版本(或使用您自己的Zip解析器)。