Exposición de código fuente en PHP
- Área: Codificación y Validación de entrada/salida
- Carácter del recurso: Recomendado
- Tecnologías: PHP
Descripción
Con este script corriendo en el mismo servidor que el código fuente de la aplicación a ejecutar, un atacante puede ver cualquier fichero que el servidor pueda leer, indicando la ruta y el nombre de fichero.
Por ejemplo, asumiendo que el script se llama file.php y se encuentra alojado en example.org, un fichero en la ruta /path/to/source.php puede ser expuesto.
Ejemplos
<?php
header('Content-Type: text/plain');
readfile($_GET['file']);
?>
http://example.org/file.php?file=/path/to/source.php
Desde luego, el atacante debe conocer la localización del código fuente para que este script sea útil, pero scripts más sofisticados pueden permitir al atacante bloquear el sistema.
En un servidor compartido, todo el código fuente es público, por lo que es necesario almacenar los datos sensibles en una base de datos.
Un ejemplo sería el siguiente:
<?php
$db_user = 'myuser';
$db_pass = 'mypass';
$db_host = 'localhost';
$db = mysql_connect($db_host, $db_user, $db_pass);
?>
Si el camino de este fichero es conocido, algunos usuarios pueden potencialmente acceder a él y obtener las credenciales de la base de datos, accediendo a datos sensibles.
Contenidos relacionados
Código | Título | Tipo | Carácter | |
---|---|---|---|---|
PAUT-0196 | Exposición del código fuente | Pauta | Directriz | Recomendada |