Saluti, Spero di rendere sicuro il mio piccolo programma in modo che i potenziali utenti malintenzionati non possano visualizzare i file riservati sul server.Sanitize percorso file in 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');
}
Fuori della parte superiore della mia testa so che di input come ad esempio '../../../../../../etc/passwd' sarebbe guai, ma chiedendosi quali altre input maliziosi che dovrei aspettarmi e come prevenirli.
Basta escludere qualsiasi input contenente ../ – halfdan
D'accordo che avrebbe risolto un problema, ma sto supponendo che ci sono molti altri pericoli ho bisogno di guardare fuori per. Sto cercando una buona soluzione rivestita di ferro per tutti loro – SeanDowney
@halfdan - cerca sempre di evitare un approccio black-list alla sicurezza come questa, ci sarà sempre qualcosa che ti manca. Come l'uso di caratteri backspace, tabulazioni, newline, caratteri null, altri caratteri Unicode o char unicode intenzionalmente interrotti che passerebbero il filtro, ma causano comunque la funzione PHP di fare qualcosa che stavi cercando di proteggerlo. Metti alla prova quello che vuoi veramente: che il percorso risultante è in una posizione sicura. – Cheekysoft