08. oktober 2006 - 13:42Der er
18 kommentarer og 1 løsning
Hjemmeside bliver hacked
Hej
Jeg har i den senere tid oplevet, at på sider, hvor jeg bruger nedenstående index.php, bliver siden ofte hacked, og der bliver eksempelvis lagt en eller anden Muhammed-relateret side ind som index. Da jeg ikke lige er superskarp til php ved jeg ikke, hvordan det kan lade sig gøre.
Er der nogen der kan se, hvad der er gør dette muligt? Og hvordan jeg kan forhindre det?
Jeg har i hvert fald fået hjælp til at lave det, så det kan man vist godt sige, at jeg er blevet anbefalet. Er der en forholdvis simpel måde at slippe udenom problemet på?
Giver lige et eksempel på menuen i det nedenstående. Så den indeholder kun de forskellige sider med indhold jeg har. Selve de forskellige sider indeholder stort set kun HTML.
Du kan lave en masse snedigt med noget reg.exp. som du så lige skal fatte og her kan du tilmed også ende ud i at de måske overser lidt.
Jeg har stået med samme problem og løste det på følgende måde.
<?php $side = md5($_REQUEST['side']);
switch ($i) { case '9525da429cd73e9f41073977822824ee': // Svarer til md5(forside.php) echo "forside"; break; case fa3ac215444e9d549c70debe36414a30: // Svarer til md5(galleri.php) echo "galleri"; break; default: echo "i is not equal to 0, 1 or 2"; } ?>
osv. osv.
Er man haj kunne løsningen også være reg.exp men ovenstående kan brugeren ikke sende dig almuligt skrammel ;)
Hvis du kun har de 4, så kan du, som mccookie antyder, bare teste for dem. md5 gør det nu ikke et hak mere sikkert, kun mere besværligt for dig. Du kan endda spare ".php": ?side=galleri
witch ($i) { case 'forside': include('forside.php'); break; case 'galleri': include('galleri.php'); break; default: include 'forside.php'; } ?>
Ja, jeg har netop kun de 4, men har uheldigvis brug fra at få det skåret endnu mere ud i pap :( Da det vist ser ud til at noget af din kode ikke kom med i kommentaren, kan det da passe at det skal se sådan ud?:
<? side=galleri switch ($i) { case 'forside': include('forside.php'); break; case 'galleri': include('galleri.php'); break; case 'links': include('links.php'); break; case 'kontakt': include('kontakt.php'); break; default: include 'forside.php'; } ?>
Skal if-sætningen øverst i filen stadig være der? Og hvordan skal link'ene i menuen da se ud?
Uheldigvis loader den default-siden lige meget hvad. Adresselinien skifter godt nok til eksempelvis "..../index.php?side=galleri", men indholdet på siden er stadig default-sidens indhold. Koden ser nu således ud:
<?php switch ($i) { case 'forside': include('forside.php'); break; case 'galleri': include('galleri.php'); break; case 'links': include('links.php'); break; case 'kontakt': include('kontakt.php'); break; default: include 'forside.php'; } ?>
Nu fik jeg det til at virke :) Variablen skulle selvfølgelig være $side. Mange tak for hjælpen, især også til erikjacobsen!
Synes godt om
Ny brugerNybegynder
Din løsning...
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.