Nasıl güvenli (sertleştirilmiş) bu betik (part 2)

2 Cevap php

Ben dinamik değişken kaldırılır ve yerine aşağıda gördüğünüz gibi statik bir biri ile değiştirilir eğer benim previous question on this topic, imalar ne olurdu ...

    $source = 'http://mycentralserver.com/protected/myupdater.zip';

Ben kolaylık için aşağıdaki kodu dahil ettik ...

<?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();
}

?>

2 Cevap

En azından SHA-1 ile zip karma ve değişmedi sağlamak için sindirmek karşı kontrol edilmelidir. Bu sindirir değiştirmek son derece zor olmalıdır.

Ben hala otomatik güncellemeler biraz şüpheli olduğunu düşünüyorum.

PHP 5.2.6 ve daha eski Zip en extractTo () metodu aracılığıyla keyfi yerlere yazılı izin bir açığı vardı.

Bkz: http://www.securityfocus.com/bid/32625

Zip içeriği güvenilmez iseniz Yani, PHP 5.2.7 veya daha yeni kullanın (veya kendi Zip ayrıştırıcı kullanmak) gerekir.