İçeriğe geç

Dizin gezinme (ARCH7103)

Anahtar php.security.path-traversal · Önem error · Kategori security · CWE CWE-22

Dosya yolunu kullanıcı girdisinden normalleştirmeden oluşturmak, saldırganların ../ dizileriyle hedef dizinin dışına çıkıp keyfi dosyalara erişmesine olanak tanır. Çözümlenmiş yolun temel dizin içinde kaldığını doğrulamak gerekir.

<?php
$file = $_GET['file'];
echo file_get_contents("/var/www/uploads/$file");
<?php
$base = '/var/www/uploads';
$path = realpath($base . '/' . $_GET['file']);
if ($path === false || !str_starts_with($path, $base . '/')) {
http_response_code(400);
exit;
}
echo file_get_contents($path);

Yolu realpath() ile çözümleyin ve sonucun izin verilen temel dizinin içinde kaldığını doğrulayın.