On 4/26/06, P. Guethlein <[EMAIL PROTECTED]> wrote:
>
> Initial index.php file:
>
> <?php
> if(isset($_GET['d'])){setcookie('disp',$_GET['d'],time()+(60*60*24*60));$_COOKIE['disp']=$_GET['d'];}
> include_once('writemenus.php');
>
> if(!isset($_GET['href'])) $include = 'startpage.htm';
> else {
> $include = $_GET['href']; $include = "$include.php";
> if($include=='index.php')$include = 'startpage.htm';
> }
> include_once($include);
> include_once('footer.htm');
> ?>
>
> =============================
> Hackers seem to be able to call a remote script by appending the URL
> to the href= command line . ( $include )
..because you're not checking it, you're just including it.
If you turn off allow_url_fopen then this will stop it, but it's best
to fix it properly.
You could do something like this:
$mydir = dirname(__FILE__);
$include = $_GET['href'].'.php';
if (realpath($mydir.'/'.$include) != $mydir.'/'.$include) {
$include = 'startpage.htm';
} else {
$include = $mydir .'/'.$include;
}
You use realpath to get rid of '../' and './' type references (see
http://www.php.net/realpath), then make sure that's the same file as
in the current directory.
If they don't match, it includes startpage.htm.
--
Postgresql & php tutorials
http://www.designmagick.com/
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php