Gå til innhold

Er dette scriptet hacker sikkert ?


Anbefalte innlegg

<?php
$date = date('l dS \of F Y h:i:s A');
$path = "./";
$dir_handle = @opendir($path) or die("Unable to open $path");
$file = htmlspecialchars($_GET['file']);
$logfile = 'stats.txt';
$ip = $_SERVER['REMOTE_ADDR'];

if($file)
{

if($file != 'index.php')
{
$fp = fopen("./$logfile", 'a');
fwrite($fp, "$date $ip $file\n");
fclose($fp);

if(strstr($file, "..") || strstr($file, "/")){ die("dø script kiddie");}
include($file);
}
}
else
{

while ($file = readdir($dir_handle))
{
if($file != '.' && $file != '..' && $file != 'stats.txt'){
  echo "<a href='?file=$file'>$file</a><br/> \n";}
}
closedir($dir_handle);

}
?>

 

Fins det feil i dette scriptet som kan utnyttes? I såfall fortell hvordan.

Lenke til kommentar
Videoannonse
Annonse

Ta heller å se litt på realpath, og så er det ikke så vanskelig å sjekke om fila er inni realpath("./"); og... ja du tar resten.

 

Det med logginga di er ganske dumt, tenk deg at en person setter seg og trykker på refresh et par hundre ganger, eller enda værre, skriver et enkelt script spør etter samme hele tida. Du må heller gjøre sånn at du legger en til "kolonne" med antall requests fra hver ip.

 

Det med å ta htmlspecialchars er unødvendig først. Lag heller en annen variabel $file_print som er uten html kode som du bruker til å skrive ut. Tenk hvis en fil har < eller > i navnet sitt.

Lenke til kommentar

Jeg kan ikke nok php til å avgjøre om scriptet ditt er sikkert. Jeg pleier å bruke preg_match for å forsikre meg om at bare tegn som har noe i filnavn å gjøre er der, om det er du som definerer hvilke filnavn som skal kunne inkluderes så kan du jo sørge for at bare bokstaver og punktum godtas i filnavnet. Vet ikke om scriptet ditt vil slippe gjennom ascii-kodede tegn etc. Kan som sagt altfor lite om dette.

Lenke til kommentar

Et script vil aldri bli helt hacke og cracke sikkert, pga. sikkerhetshull i de fleste serversoftware.

Men, når du bruker flatfiler blir sikkerheten enda mindre, pga. alle som vet filnavnet og filpatch (hvor filen ligger) kan i teorien endre på filen uten problemer.

Lenke til kommentar
Et script vil aldri bli helt hacke og cracke sikkert, pga. sikkerhetshull i de fleste serversoftware.

Men, når du bruker flatfiler blir sikkerheten enda mindre, pga. alle som vet filnavnet og filpatch (hvor filen ligger) kan i teorien endre på filen uten problemer.

7632203[/snapback]

 

Det blir vel feil? Et script i seg selv kan godt være bombesikkert det, men som du sier kan hull i serversoftware allikevel gi en hacker tilgang.

Men at sikkerheten nødvendigvis blir dårligere med "flatfiler" stemmer da ikke. Så lenge man ikke har gjort noen feil i oppsettet så blir det jo ingen hull.

Derimot er det nok adskillig mer jobb og lage sitt eget sikre "flatfil"-system en å ta i bruk en database-server.

Lenke til kommentar
For å forhindre "spamming" av scriptet, kan du jo bruke session variabel, nesten som et login script, der man bare får oppdatert en gang så lenge session varer.

7633349[/snapback]

Verdiløst. Det er ikkje vanskelig å få en ny session om du vil, og php er heller ikkje laga for at det skal vere vanskeleg å få ny session. Hugs på at en spambot ikkje oppfører seg slik som en nettleser mtp. cookies, javascript o.l.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...