Saludos, Espero que mi pequeño programa sea seguro para que los posibles usuarios malintencionados no puedan ver los archivos confidenciales en el servidor.Desinfectar la ruta del archivo en PHP
$path = "/home/gsmcms/public_html/central/app/webroot/{$_GET['file']}";
if(file_exists($path)) {
echo file_get_contents($path);
} else {
header('HTTP/1.1 404 Not Found');
}
De la parte superior de mi cabeza Sé que de entrada como '../../../../../../etc/passwd' habría problemas, pero preguntándose qué otra entradas malosas que debería esperar y cómo prevenirlas.
Sólo excluye ninguna entrada que contiene ../ – halfdan
acordó que resolver un problema, pero estoy asumiendo que hay muchos otros peligros que tengo que mirar hacia fuera. Estoy buscando una buena solución revestida de hierro para todos ellos – SeanDowney
@halfdan - siempre trate de evitar un enfoque de lista negra para la seguridad como esta, siempre habrá algo que extrañará. Como el uso de caracteres de retroceso, pestañas, líneas nuevas, caracteres nulos, otros caracteres Unicode, o caracteres Unicode rotos intencionalmente que pasarían su filtro, pero aún causan que la función PHP haga algo que usted estaba tratando de proteger. Pruebe lo que realmente quiere: que la ruta resultante esté en un lugar seguro. – Cheekysoft