[PHP] Warum Whitelist zur Sicherung von include()

glowhand

Programmierer
21 April 2006
273
16
Moin, moin.
Auf diversen Internetseite, wie auch hier im Forum, liest man ja immer von der Absicherung des include()-Befehls an Hand einer whitelist....

So ist dieser Code unsicher:
PHP:
include($_GET['site'].'.php');

...dieser allerdings schon:
PHP:
$whiteList = array('index','tomate','fernseher');
if( in_array($_GET['site'],$whiteList))
{
  include($_GET['site'].'.php');
}

Das ist ja schön und gut, aber lohnt sicher Mehraufwand zur Erstellung einer Whitelist denn überhaupt?
Wäre das Script nicht so schon genug abgesichert...

PHP:
include(basename($_GET['site']).'.php');

...oder ähnlichen Sicherheitsvorkehrungen?
 
und in wie fern schützt dich das davor das da jemand Seiten einbindet die du nicht willst? z.B. die selbe Seite immer und immer wieder, oder irgendwelche Seiten die du für intern gesichert hältst zum Beispiel aus deinem Adminbereich.
 
Also ich meine mal gelesen zu haben (bitte korrigiert mich wenn es falsch ist)dass man ohne whitelist zB externe URL, welche einen Schad Code enthalten könnten, includen könnte.

zb.
Index.php?site=https://www.hackerseite.de.
 
[...] aber lohnt sicher Mehraufwand zur Erstellung einer Whitelist denn überhaupt?
Sicherheit ist nie ein Mehraufwand 8O
Im Beispiel musst du 3 Zeilen mehr Code schreiben. Das nennst du "Mehraufwand" ?! :LOL:

Du benutzt die Whitelist ja nicht nur, um externe Seiten auszuschließen. Ein typisches Beispiel (vielleicht liest derjenige, den ich meine, ja grade mit :mrgreen:) ist das Abändern der URL, um Verzeichnisstrukturen und Dateilisten auszuspähen.

Die Konstruktion
PHP:
include($_GET['site'].'.php');
ist imho immer unsicher, da der Programmierer wohl wissen wird, was er einbinden muss. D.h. es steht niemals eine Request-Variable direkt in einen Include-Statement.

Angenommen, wir haben eine Seite mit obigen Code vorliegen. Ich rufe sie als Angreifer einfach mit bestimmten ?site-Argumenten auf und teste, wo das include ne Warnung wirft.
 
Beim Absichern von Webseiten muss man soviel beachten das die Erstellung der Whitelist nun wirklich das kleinste Übel ist.

Sicherheit sollte man auch nicht als Mehraufwand sehen sondern als festen Bestandteil deiner Arbeit der genauso notwendig ist wie die Programmierung der eigentlich Funktionalität.

Und die Whitelist für die INCLUDES ist nun wirklich das geringste von allem. Ich persönlich ziehe Seitennummer noch vor so bleibt etwas mehr von meinen Dateinamen und Verzeichnisstrukturen verborgen.
 
Ach quatsch, lass dir nicht einreden, dass man whitelists braucht.
Davon erzählen immer nur die professionellen coder (tleilax & hächerlein) um besser und intelligenter dazustehen und sich von dem restlichen haufen abgrenzen zu können.
PHP ist sicher, da gibt es keine Sicherheitslücken, es lebe magic_quotes. :biggrin:
Achso und noch 2 Weißheiten des Tages:
:arrow: Schleifen brauch man nicht, wenn man den Code 10mal untereinander schreibt ist das besser
:arrow: In HTML hat sich seit 5 Jahren nichts geändert und JavaScript ist nur ne kleine Kinderkacke die nichts taugt

** Wer Ironie oder Anspielungen auf Personen gefunden hat, darf diese behalten :ugly: **

scnr :angel: