mistax
Goto Top

Sicherheitsprobleme mit einem Script

Mir wurde von meinem Hoster mitgeteilt, dass folgendes Script Sicherheitsprobleme verursacht; so wirklich richtig mag ich mir aber noch nicht ausmalen, was hier passieren kann:

Die php enthält das Gerüst der Seite, der Inhalt wird per GET-Variable im Link hineingeladen:

main.php?choice=inhalt_der_seite


Wird dann so verarbeitet:

<?php
/*Feststellen der aufgerufenen Seite*/
 $seite.= $choice.".php";  

include($seite);
?>

Dadurch wird die im Verzeichnis vorhandene inhalt_der_seite.php eingebunden...


Da ich noch relativer PHP-Anfänger bin, der vermutlich mehr an Möglichkeiten, denn an Risiken denkt, wäre ich für Hilfe dankbar, ob mein Ansatz von vornherein dämlich ist, oder ich vielleicht nur noch ein paar Sachen ändern muss...


Noch eine Randfrage: Wäre es mit diesem Code möglich, dass ein Angreifer Dateien auf meinen Space lädt?


Vielen Dank für jede Hilfe!

Content-Key: 94780

Url: https://administrator.de/contentid/94780

Printed on: April 16, 2024 at 16:04 o'clock

Member: SlainteMhath
SlainteMhath Aug 19, 2008 at 12:55:33 (UTC)
Goto Top
Hi,

in deinem Code beispiel ist es möglich eine php Datei aus einer beliebigen Lokation zu inkludieren. D.h. die Datei kann auch auf einem anderen Webserver liegen!

Der Angreifer kann dadurch auf sämtliche Variablen, Verzeichnisse und SQL Server zugreifen auf die dein Script zugreifen kann.

Grundsätzlich gilt: jegliche eingaben die der user macht bzw. beinflussen kann müsse n vor verwendung im Programmcode grundsätzlich auf plausibilität geprüft werden!

Noch eine Randfrage: Wäre es mit diesem Code möglich, dass ein Angreifer Dateien auf meinen
Space lädt?
Ja, und noch vieles mehr!

lg,
Slainte
Member: MISTAX
MISTAX Aug 19, 2008 at 13:10:28 (UTC)
Goto Top
Hmm... das klingt nach viel Spass...

Danke für die schnelle Antwort; wenn ich so drüber nachdenke auch durchaus logisch und nachvollziehbar...

D.h. so müsste es aber dann ohne Sicherheitsrisiken gehen, oder?

<?php
/*Definieren welche Inhalte es gibt*/
$inhalt = array("inhalt1", "inhalt2", "inhalt3");  

/*Prüfen ob Eingabe mit Inhalt übereinstimmt*/
     foreach($inhalt as $sel_inhalt)
     {
      if ( $choice == $sel_inhalt) 
         {
          $seite.= $choice.".php";  
         }
     }

/*Inhalt anzeigen*/
include($seite);
?>
Member: SlainteMhath
SlainteMhath Aug 19, 2008 at 13:12:31 (UTC)
Goto Top
Jau, genau so wirds gemacht face-smile
Member: MISTAX
MISTAX Aug 19, 2008 at 13:13:24 (UTC)
Goto Top
Danke dir vielmals! Schönen Nachmittag noch!