Sicherheit - Undefined variable

oldputz1990

Erfahrenes Mitglied
Hallo!

Ich habe eine "index.php" Datei.

In die index.php datei wird der Inhalt includet.

in den einzelnen Datein steht folgender Code:
PHP:
<?php

if($rechte_config_benutzer == 0)
  {
  echo '<div class="error">Zugriff verweigert!<p>Sie haben nicht die notwendigen Zugriffsrechte!</div>';
  exit;
  }
  
?>

Die Variable "$rechte_config_benutzer" steht am Anfang der index.php.

Wenn ich die Datei aber nicht include, sondern direkt aufrufe, ist die Variable logischerweise nicht vorhanden --> daher : Notice: Undefined variable: ...


Stelle dies irgentein Sicherheitsproblem dar?

Danke!
 
Es könnte bei "register_globals: on" ein Sicherheitsproblem darstellen.
Der "Angreifer" würde durch die Fehlerausgabe erfahren, wie die Variable heißt, in der du die Benutzerrechte ablegst.
So könnte er dann einfach beim Aufruf der Seite manipulieren: http://deineSeite.de/deinScript.php?rechte_config_benutzer=admin (z.B.)

Du könntest in dem Script zuvor überprüfen, ob die Variable angelegt wurde z.B. mit [phpf]isset[/phpf] und dementsprechend reagieren.
 
Wenn du register_globals auf ON hast, JA. Der Benutzer könnte dann über die URL per GET die Variable setzten und so auf unerlaubten Content zugreifen. Steht in der Fehlermeldung auch der Name der Variablen, die undefinded ist!? Wenn ja, dann besteht erst recht die Gefahr.
Am sichersten ist es, auf jeder Seite, die included wird, zu prüfen, welche Rechte der User hat.
Denke ich mal. :-/

edit: Schön zu langsam gewesen...
isset() bringt dann aber auch nicht mehr viel, wenn register_globals an ist und die Variable über die URL gesetzt wird
 
Zuletzt bearbeitet:
isset() hilft in dem fall von Globals on aber auch nicht weiter.

also entweder schreibst du die rechte in die Session hinein oder du setzt die variablen per define() das kann man nicht in den Get Parametern einfach so anlegen.
 
Wow. ich habe gerade die register_globals on geschaltet.

Ich habe nie gewusst das das geht... :suspekt::suspekt:

ich habe das jetzt mit define() gemacht:

PHP:
define ("rechte_config_benutzer", $array_session_rechte['config_benutzer']);

Danke!!
 
[phpf]isset[/phpf] war eigentlich für die "register_globals: off"-Version gedacht. :suspekt:

In diesem Fall wäre die [phpf]defined[/phpf]-Funktion wohl eher angebracht! :)
 
Zurück