22. marts 2003 - 17:12Der er
9 kommentarer og 1 løsning
Hjælp til sikkerhed!
Hejsa, jeg har skrevet tidligere på dagen også men vender hermed tilbage fordi det fik jeg ikk rigtig fat i.
Anwyway, jeg har følgende funktion:
if (!$page) { include("fil.php"); include("/anden-fil.php"); } else { include($page); }
I praksis kommer linket til at se sådan her ud:
index.php?page=side.php
Men en besøgende fik beskrevet for mig hvor let funktionen kunne misbruges til at skaffe passwords osv fra min side. Det han havde gjort var at skrive index.php?page=hans.domæne.com/script.php (hvor script.php bestod af et script der kunne fortælle oplysninger om min mappestruktur osv. Således kunne han hacke mig bagefter hvis han ville.
Det jeg leder efter her er et konkret svar på hvordan man i denne her funktion kan indbygge sådan at man at under ingen omstændigheder kan misbruge det
Jeg forestiller mig noget a'la en funktion der tjekker at alt efter ?page= ikke kan være en http url, eller at man har en liste med ok sider den kan tage og hvis ikke den står i "ok" listen så melder den fejl.
Jeg aner intet om php - måske du har svaret ! Det blir godt belønnet da det er et seriøst problem jeg har!
Du kunne eventuelt også gøre således: if (!isset($_GET['page'])) { include("fil.php"); include("/anden-fil.php"); } else { if (file_exists($_GET['page'].".php")) { include($_GET['page'].".php"); } else { echo "Filen findes ikke"; } } Så kan der kun inkluderes php-filer
Når du så laver dine links således: "?page=forside" så vil forside.php blive inkluderet. Hvis en person, så f.eks. skriver: ?page=../hemmeligfil.txt så vil den blive lavet om til hemmeligfil.txt.php og vil så melde at filen ikke eksisterer.
jahh, sikrest er jo nok at lave et array() med navne på de filer du vil bruge, og derefter tjekke om navnet findes: <?php $filer = array("side1", "side2", "side3"); //kan også ændres til at læse et dir igennem for filer i stedet, så det bliver "dynamisk" if (isset($_GET["page"]) && in_array($_GET["page"], $filer)) { include($_GET["page"] .".php"); } ?>
Sukos: din er meget god men min side kommer til at bestå af mange mange sider, og hva hvis siderne har samme navn men ligger i forskellige biblioteker?
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.