Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Sanitize file path in PHP

Greetings, I'm hoping to make my tiny program secure so that potential malicious users cannot view sensitive files on the server.

    $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');     } 

Off the top of my head I know that input such as '../../../../../../etc/passwd' would be trouble, but wondering what other malcious inputs I should expect and how to prevent them.

like image 560
SeanDowney Avatar asked Dec 16 '09 00:12

SeanDowney


People also ask

What is sanitization PHP?

Sanitizing data means removing any illegal character from the data. Sanitizing user input is one of the most common tasks in a web application. To make this task easier PHP provides native filter extension that you can use to sanitize the data such as e-mail addresses, URLs, IP addresses, etc.

What is sanitize filename?

Description. Removes special characters that are illegal in filenames on certain operating systems and special characters requiring special escaping to manipulate at the command line.


2 Answers

realpath() will let you convert any path that may contain relative information into an absolute path...you can then ensure that path is under a certain subdirectory that you want to allow downloads from.

like image 172
Bert Lamb Avatar answered Sep 29 '22 03:09

Bert Lamb


Use basename rather than trying to anticipate all the insecure paths a user could provide.

like image 31
philfreo Avatar answered Sep 29 '22 03:09

philfreo