Looks like this issue was fixed in PHP 5.3 https://bugs.php.net/bug.php?id=39863| CARVIEW |
Select Language
HTTP/2 301
server: myracloud
date: Tue, 30 Dec 2025 12:24:50 GMT
content-type: text/html
content-length: 161
location: https://www.php.net/manual/es/security.filesystem.nullbytes.php
HTTP/2 200
server: myracloud
date: Tue, 30 Dec 2025 12:24:50 GMT
content-type: text/html; charset=utf-8
content-language: en
permissions-policy: interest-cohort=()
x-frame-options: SAMEORIGIN
link: ; rel=shorturl
last-modified: Tue, 30 Dec 2025 12:12:46 GMT
vary: accept-encoding
content-encoding: gzip
expires: Tue, 30 Dec 2025 12:24:50 GMT
cache-control: max-age=0
PHP: Cuestiones relacionadas a bytes nulos - Manual
update page now
Cuestiones relacionadas a bytes nulos
Como PHP utiliza las funciones de C para operaciones relacionadas al sistema de archivos, se podría manejar bytes nulos de manera bastante inesperada. Como un byte nulo denota el fin de una cadena en C, las cadenas que contengan estos no serán consideradas por completo, sino sólo hasta que ocurra un byte nulo. El siguiente ejemplo muestra un código vulnerable que presenta este problema:
Ejemplo #1 Script vulnerable a bytes nulos
<?php
$file = $_GET['file']; // "../../etc/passwd\0"
if (file_exists('/home/wwwrun/' . $file . '.php')) {
// file_exists devolverá true si el archivo /home/wwwrun/../../etc/passwd existe
include '/home/wwwrun/' . $file . '.php';
// el archivo /etc/passwd se incluirá
}
?>Por lo tanto, cualquier cadena que se utiliza en una operación de sistema de archivos siembre deben ser validados correctamente. He aquí una versión mejorada del ejemplo anterior:
Ejemplo #2 Validando correctamente la entrada
<?php
$file = $_GET['file'];
// Lista blanca de valores posibles
switch ($file) {
case 'main':
case 'foo':
case 'bar':
include '/home/wwwrun/include/'.$file.'.php';
break;
default:
include '/home/wwwrun/include/main.php';
}
?>
+add a note
User Contributed Notes 2 notes
Anonymous ¶
11 years ago
cornernote [at] gmail.com ¶
10 years ago
clean input of null bytes:
<?php
$clean = str_replace(chr(0), '', $input);
?>
↑ and ↓ to navigate •
Enter to select •
Esc to close • / to open
Press Enter without
selection to search using Google