Re: opendir security hole

From: Date: Mon, 03 Jun 2002 14:37:48 +0000
Subject: Re: opendir security hole
References: 1 2  Groups: php.general 
Request: Send a blank email to php-general+get-100399@lists.php.net to get a copy of this message
On Thu, May 23, 2002 at 11:23:42AM -0400, Analysis & Solutions wrote: > On Thu, May 23, 2002 at 11:22:28PM +1000, daniel wrote: > > dir=../../../../ it will show you the root dir of the server , how can i > > Before passing the $Dir variable to the file functions, clean it up... > > $Dir = preg_replace('/..\//', '', $Dir); ------------------------------------------------ The initial poster just wrote me off list with a follow up question. Here's my reply.... Hi: > $dir = preg_replace('/..\//', '', $dir); Hmm. I must have been tired when I wrote that. "." matches any character. Thus "..\/" will match any two characters before a "/". I should have escaped the periods. That should have been $dir = preg_replace('/\.\.\//', '', $dir); Sorry. Now, you are also attempting to strip ".." via a whole separate regex. > $dir = preg_replace('..', '', $dir); First, that expression isn't encapsulated in the "/" delimiters, thus it's an invalid preg expression. Second, as in my first regex, you didn't escape the "." Third, you can do it in the initial expression. $dir = preg_replace('/\.\.\/?/', '', $dir); That translates to find any string that has two periods and maybe one forward slash. Enjoy, --Dan -- PHP classes that make web design easier SQL Solution | Layout Solution | Form Solution sqlsolution.info | layoutsolution.info | formsolution.info T H E A N A L Y S I S A N D S O L U T I O N S C O M P A N Y 4015 7 Av #4AJ, Brooklyn NY v: 718-854-0335 f: 718-854-0409

« previous php.general (#100399) next »