PDA

Bekijk Volledige Versie : PHP beveiliging serveroverload?



Jeroen FF Heijmans
17/07/03, 17:20
Ik meen mij te herinneren dat men mij ooit wees op een serveroverload foutje in een
PHP-scriptje van mij *slik*

Ik heb nu het volgende in mijn scriptje staan:
<?
if ($page) {
if ($page = 'index.php') {
ECHO("Liever niet");
} else {
INCLUDE($page);
}
} else {
INCLUDE('start_index.inc');
}
?>


Maar ik meen me te herinneren dat er dan toch een manier was om het bestand aan te roepen,
met gebruik van ../ ./ ofzo. Klopt dat of is deze 'beveiliging' voldoende?

Moet ik ../ en ./ eigenlijk wel gaan afschermen omdat men anders misschien over je server
kan ronddwalen?

Cyrel Janez
17/07/03, 17:35
"Jeroen FF Heijmans" <news@nospam.ff.fm> wrote in message
news:bf6e8r$7ug$1@rammelbak.ff.fm...
> Ik meen mij te herinneren dat men mij ooit wees op een serveroverload
foutje in een
> PHP-scriptje van mij *slik*
>
> Ik heb nu het volgende in mijn scriptje staan:
> <?
> if ($page) {
> if ($page = 'index.php') {
> ECHO("Liever niet");
> } else {
> INCLUDE($page);
> }
> } else {
> INCLUDE('start_index.inc');
> }
> ?>
>
>
> Maar ik meen me te herinneren dat er dan toch een manier was om het
bestand aan te roepen,
> met gebruik van ../ ./ ofzo. Klopt dat of is deze 'beveiliging' voldoende?
>
> Moet ik ../ en ./ eigenlijk wel gaan afschermen omdat men anders misschien
over je server
> kan ronddwalen?

Pffft :|

<?php

if( $page ) {

//Trusted Items
$array = array( "bla.php", "bal.php", "abl.php" );

if( !in_array( $page, $array ) ) {
print "Liever Niet Schattebout!";
}elseif( in_array( $page, $array ) {
include( $page .".php" );
}

}else{

include( "start_index.inc" );

}
?>
Zow is hij net ietsje beter ;) Als $page niet in de toegestane file-list
staat dan mag hij hem ook niet openen, overigens is dit niet gechecked en
heb ik net even snel geschreven ;)

--
Cyrel Janez
cyrel@unseen.nl

Jeroen FF Heijmans
17/07/03, 18:05
Cyrel Janez <cyrel@unseen.nl> wrote:
>
> <?php
>
> if( $page ) {
>
> //Trusted Items
> $array = array( "bla.php", "bal.php", "abl.php" );
>
> if( !in_array( $page, $array ) ) {
> print "Liever Niet Schattebout!";
> }elseif( in_array( $page, $array ) {
> include( $page .".php" );
> }
>
> }else{
>
> include( "start_index.inc" );
>
> }
> ?>
> Zow is hij net ietsje beter ;) Als $page niet in de toegestane file-list
> staat dan mag hij hem ook niet openen, overigens is dit niet gechecked en
> heb ik net even snel geschreven ;)


Ziet er leuk uit, maar dan moet ik dus van tevoren opgeven welke bestandsnamen toegestaan
zijn begrijp ik. Dus als ik een nieuwe groep ofzo maak moet ik die weer toevoegen.

Cyrel Janez
17/07/03, 19:05
"Jeroen FF Heijmans" <news@nospam.ff.fm> wrote in message
news:bf6gl8$85h$1@rammelbak.ff.fm...
> Ziet er leuk uit, maar dan moet ik dus van tevoren opgeven welke
bestandsnamen toegestaan
> zijn begrijp ik. Dus als ik een nieuwe groep ofzo maak moet ik die weer
toevoegen.

Ja, of wil je een array maken met welke filenames allemaal niet mogen ;)

Je kan wel met eregi kijken of hij niet uit je dir gaat ( ../ ) :)

--
Cyrel Janez
cyrel@unseen.nl

John Bokma
17/07/03, 20:50
Cyrel Janez wrote:
> "Jeroen FF Heijmans" <news@nospam.ff.fm> wrote in message
> news:bf6gl8$85h$1@rammelbak.ff.fm...
>
>>Ziet er leuk uit, maar dan moet ik dus van tevoren opgeven welke
>
> bestandsnamen toegestaan
>
>>zijn begrijp ik. Dus als ik een nieuwe groep ofzo maak moet ik die weer
>
> toevoegen.
>
> Ja, of wil je een array maken met welke filenames allemaal niet mogen ;)
>
> Je kan wel met eregi kijken of hij niet uit je dir gaat ( ../ ) :)

IMHO beter om *altijd* te werken ten opzichte van een vaste directory
(root). En precies definieeren wat *wel* mag (b.v. alfanummeriek en _)
en de rest als fout af te handelen. Als het altijd dezelfde extensie
heeft, plak die er zelf achter (dus: een '.' is dan b.v. niet
toegestaan). Als je geen subdirs toestaat dan is '/' een verboden teken.

Ga nooit dingen proberen te fixen, b.v. in perl: s|/||g; (haalt / uit de
string.

John

--
email: mail(at)johnbokma.com (or reply) home: http://johnbokma.com/
website design tips: http://johnbokma.com/websitedesign/

Jeroen FF Heijmans
17/07/03, 21:20
John Bokma <postmaster@castleamber.com> wrote:
> Cyrel Janez wrote:
>> "Jeroen FF Heijmans" <news@nospam.ff.fm> wrote in message
>> news:bf6gl8$85h$1@rammelbak.ff.fm...
>>
>>>Ziet er leuk uit, maar dan moet ik dus van tevoren opgeven welke
>>
>> bestandsnamen toegestaan
>>
>>>zijn begrijp ik. Dus als ik een nieuwe groep ofzo maak moet ik die weer
>>
>> toevoegen.
>>
>> Ja, of wil je een array maken met welke filenames allemaal niet mogen ;)
>>
>> Je kan wel met eregi kijken of hij niet uit je dir gaat ( ../ ) :)
>
> IMHO beter om *altijd* te werken ten opzichte van een vaste directory
> (root). En precies definieeren wat *wel* mag (b.v. alfanummeriek en _)
> en de rest als fout af te handelen. Als het altijd dezelfde extensie
> heeft, plak die er zelf achter (dus: een '.' is dan b.v. niet
> toegestaan). Als je geen subdirs toestaat dan is '/' een verboden teken.

Aha.. mijn files die ik laat includen eindigen allemaal op .inc, dus als ik dan aangeef dat er alleen ge-included mag
worden als het bestand eindigd op .inc en dat er geen . of / gebruikt mag worden als eerste teken ben ik 'veilig'.

Ik wil namelijk alle files in dezelfde dir zetten en eventuele extra files misschien nog wel in een subdir (kheb een
gedichtenalbum die ik dan netjes bij elkaar kan houden). Kan ik in apache vhosts niet iets aangeven zodat men gewoon
niet omhoog kan uit de dir die ik opgegeven heb? (dus http://www.ffii.nl/../../ komt gewoon niet hoger uit dan
http://www.ffii.nl/ ajbwib)

> Ga nooit dingen proberen te fixen, b.v. in perl: s|/||g; (haalt / uit de
> string.

Wat is hier het nadeel van?

Marcus
17/07/03, 23:50
Jeroen FF Heijmans wrote:
> Aha.. mijn files die ik laat includen eindigen allemaal op .inc, dus als ik dan aangeef dat er alleen ge-included mag
Kan je wellicht je regellengte aanpassen? dit is erg onleesbaar :( (ik zie
alleen de linkerhelft van je zinnen)

>> Ga nooit dingen proberen te fixen, b.v. in perl: s|/||g; (haalt / uit de
>> string.
>
> Wat is hier het nadeel van?

Dat geeft onverwachte effecten. Een hele lelijke exploit in MSIE laatst
bijvoorbeeld kwam door een dergelijke fout.

Mark

Jeroen FF Heijmans
18/07/03, 08:50
Marcus <mark@ijbema.xs4all.nl> wrote:
> Jeroen FF Heijmans wrote:
>> Aha.. mijn files die ik laat includen eindigen allemaal op .inc, dus als ik dan aangeef dat er alleen ge-included mag
> Kan je wellicht je regellengte aanpassen? dit is erg onleesbaar :( (ik zie
> alleen de linkerhelft van je zinnen)

Volgens mij staat mijn regellengte op 79 ingesteld in rtin/pico. 90% van de gevallen krijg
ik ook netjes een wrap zoals nu, alleen quotes willen wel eens blijven hangen (hmm Volgens
t/m krijg zou 90 tekens zijn... ff zoeken)

Jeroen FF Heijmans
18/07/03, 12:05
Cyrel Janez <cyrel@unseen.nl> wrote:
>
> "Jeroen FF Heijmans" <news@nospam.ff.fm> wrote in message
> news:bf6gl8$85h$1@rammelbak.ff.fm...
>> Ziet er leuk uit, maar dan moet ik dus van tevoren opgeven welke
> bestandsnamen toegestaan
>> zijn begrijp ik. Dus als ik een nieuwe groep ofzo maak moet ik die weer
> toevoegen.
>
> Ja, of wil je een array maken met welke filenames allemaal niet mogen ;)


--
Grtz,

Jeroen "FF" Heijmans