[PHP]Datei-include -> Sicherheitsproblem

Dieses Thema im Forum "Ruby, php, Perl, Python ..." wurde erstellt von freddymc, 07.08.2005.

  1. #1 freddymc, 07.08.2005
    freddymc

    freddymc Guest

    Hi!

    Ich baue ein kleines Login Script in php. Das ganze wird mit sessions realisiert:
    PHP:
    session_start();
    if(!
    session_is_registered('user') || $_SESSION['user'] == "") {
    header("location:../index.php");
    die;
    }
    Anstatt für jede Neue Funktion im System eine neue Datei anzulegen, will ich nur noch eine index.php, in der die session gestartet/geprüft wird, verwenden. Die ganzen anderen werden einfach nach Abfrage von $_GET entsprechend in index.php includet.

    Nun tritt natürlich ein Sicherheitsproblem auf: Ich kann nun die versch. funktion.inc.php per URL aufrufen ohne mich eingeloggt zu haben...

    Wie soll ich das jetzt lösen?
    • Verzeichnis per .htaccess sichern,
    • session-Start/Überprüfung nur in den includes,
    • session-Start/Überprüfung sowohl in den includes, als auch in der index.php,
    • session-Start/Überprüfung in einem eigenen include, welches in JEDER Datei per require_once eingebunden wird,
    • mein Ansatz ist Bullshit.

    Sicherhreitstechnisch bin ich noch nicht so bewandert...
    Hoffe ihr könnt mir hier weiterhelfen :)

    Fred
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 MrFenix, 07.08.2005
    MrFenix

    MrFenix Executor

    Dabei seit:
    16.10.2004
    Beiträge:
    480
    Zustimmungen:
    0
    Ort:
    Siegen, NRW
    Zum Rest kann ich nichts sagen, aber .htaccess wird kaum was bringen, da php meistens die dateien lokal und nicht per http bezieht.
     
  4. #3 freddymc, 07.08.2005
    freddymc

    freddymc Guest

    php muss in dem Fall gar nichts beziehen.
    Es geht nur darum, dass die includes nicht einfach über URL-Manipulation angezeigt werden können, d.h. dass man das include Verzeichnis per .htaccess schützt.

    Auf die Includes darf nur von der index.php zugegriffen werden, nach dem session gestartet wurde etc.

    Allerdings mag ich diese Lösung überhaupt nicht... Will lieber alles mit php machen.
     
  5. #4 MrFenix, 07.08.2005
    MrFenix

    MrFenix Executor

    Dabei seit:
    16.10.2004
    Beiträge:
    480
    Zustimmungen:
    0
    Ort:
    Siegen, NRW
    Dann müssen die includes auch eigentlich nicht in einem von Apache ins Web gestelltem Verzeichniss sein. Kopier sie doch einfach sonstwohin auf die Platte.
     
  6. #5 freddymc, 07.08.2005
    freddymc

    freddymc Guest

    Krasse Idee :devil:
    Darauf bin ich noch nicht gekommen. Wusste gar nicht, dass man da noch drauf zugreifen kann...

    Aber bei den meisten Hostern hab ich nur Zugriff auf das document verzeichnis...

    Fred
     
  7. sono

    sono Sack Flöhe Hüter

    Dabei seit:
    31.01.2004
    Beiträge:
    1.299
    Zustimmungen:
    0
    Ort:
    http://webfrap.de
    ich mach das immer so :

    ich hab ein formular zum einloggen . da aber noch keine Session.

    Wenn der User sich eingeloggt hat dann startet erst die session

    dann in allen includes prüfen ob es eine session gibt ,

    PHP:

    if (isset($_SESSION['user'])){
    //hier kommt der inhalt des scriptes
    }
    else {
    ?>
    <meta http-equiv="refresh" content="0; URL=./index.php">
    <?php
    }


    du kannst auch noch in der index.php ne session variable setzen lasse um prüfen zu können ob einer direkt oder über die index.php aufruft.

    htaccess ist sinnvoll um die scripte davor zu schützen wenn mal php auf dem server ausfällt. sonst kann die einer downloaden und du guckst etwas doof.

    Gruß SOno
     
  8. #7 freddymc, 07.08.2005
    freddymc

    freddymc Guest

    aha, ok, also in jede Datei die session-prüfung...
    Wo startest du die Session? In der index.php oder in den Includes?
    Weil, mehr als einmal kann man die session ja nicht starten oder?

    Danke schonmal,
    Fred
     
  9. dmaphy

    dmaphy Routinier

    Dabei seit:
    16.04.2004
    Beiträge:
    482
    Zustimmungen:
    0
    Ort:
    Hamburg
    ich hätte es so gemacht:
    in der index.php definiere ich eine beliebeige konstandte, beispielsweise
    Code:
    define("INSCRIPT",true);
    
    in den dateien, die ich per include einbinde, überprüfe ich, ob diese konstante definiert ist:
    Code:
    if ( !defined("INSCRIPT")){ die("ruf mal lieber die index.php auf ;) "); }
    
     
  10. #9 freddymc, 07.08.2005
    freddymc

    freddymc Guest

    Ok, danke.
    Hört sich auch nicht übel an. Für den Anfang werde ich jetzt mal so arbeiten, aber eine session Lösung fände ich am komfortabelsten
     
  11. sono

    sono Sack Flöhe Hüter

    Dabei seit:
    31.01.2004
    Beiträge:
    1.299
    Zustimmungen:
    0
    Ort:
    http://webfrap.de
    Die Session wird nur einmal in der index gestartet.

    du bindest dann alles über diese index.php ein.

    Ein Script das direkt aufgreufen wird , hat keine Session und wird somit nichts ausgeben da sieht man dan gar nichts sondern wird direkt wieder an den anfang befördert dank dem meta refresh.

    Weisch was ich meine.
     
  12. #11 freddymc, 09.08.2005
    freddymc

    freddymc Guest

    :D Ja! Danke!
     
  13. #12 Flash Gordon, 15.12.2005
    Flash Gordon

    Flash Gordon Grünschnabel

    Dabei seit:
    15.12.2005
    Beiträge:
    6
    Zustimmungen:
    0
    Ort:
    Koblenz
    Bei mir steht einfach in jeder Datei (die nur eingebunden werden darf):

    PHP:
    if (!eregi("blabla.php"$_SERVER['PHP_SELF']))
        die(
    "Diese Datei darf nicht direkt aufgerufen werden!");
    blabla.php ist natürlich die Datei, über die alles läuft.

    Gruß, Flash
     
  14. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  15. #13 milius.net, 28.04.2006
    milius.net

    milius.net tail /var/log/geek

    Dabei seit:
    28.04.2006
    Beiträge:
    4
    Zustimmungen:
    0
    hallo,
    kam gerade über google rein und fand die idee gut aber der code hat fehler - so funktioniert's:
    Code:
    if (eregi("blabla.php", $_SERVER['PHP_SELF'])) 
    {
        die("Diese Datei darf nicht direkt aufgerufen werden!"); 
    }
     
  16. #14 Flash Gordon, 28.04.2006
    Flash Gordon

    Flash Gordon Grünschnabel

    Dabei seit:
    15.12.2005
    Beiträge:
    6
    Zustimmungen:
    0
    Ort:
    Koblenz
    Nun, das hängt von der Art der Implementierung ab.
    PHP:
    if (eregi("blabla.php"$_SERVER['PHP_SELF'])) die([...]);
    hier wird abgebrochen, sollte 'blabla.php' in der URL sein. blabla.php muss hier die zu schützende Datei sein. Ist meines Erachtens nicht gleich sicher, wie untere Methode.

    PHP:
    if (!eregi("blabla.php"$_SERVER['PHP_SELF'])) die([...]);
    hier wird abgebrochen, sollte 'blabla.php' NICHT in der URl sein. So war das in meinem Post auch bewusst angegeben.
    blabla.php ist hier die Datei, über die zu schützende Datei eingebunden wird.
     
Thema:

[PHP]Datei-include -> Sicherheitsproblem

Die Seite wird geladen...

[PHP]Datei-include -> Sicherheitsproblem - Ähnliche Themen

  1. Studie zur Sicherheit von Docker-Images belegt Sicherheitsprobleme

    Studie zur Sicherheit von Docker-Images belegt Sicherheitsprobleme: Eine Studie der Firma BanyanOps zur Sicherheit von Docker-Images im zentralen Repository Docker-Hub ergab eine hohe Quote an verwundbaren Images...
  2. Sicherheitsproblem? Wurde ich angegriffen?

    Sicherheitsproblem? Wurde ich angegriffen?: Hallo Ihr Alle, beim Aufrufen von Yast bekam ich die Meldung das eines der Repositorys ein falsche Prüfsumme hatte. Ob ich es dennoch...
  3. Sicherheitsproblem?

    Sicherheitsproblem?: Hi, als ich heute meine Logs durchging, bemerkte ich, dass etwa 520 unbekannte Personen sich mit meinem Sambaserver verbinden wollten....
  4. Linux-Kernel hat Sicherheitsprobleme

    Linux-Kernel hat Sicherheitsprobleme: http://www.heise.de/newsticker/meldung/54936 und die passende Werbung dazu - ein Schelm wer böses dabei denkt.
  5. [news] Sicherheitsproblem im Linux Kernel (Overflow)

    [news] Sicherheitsproblem im Linux Kernel (Overflow): http://www.unixboard.de/comments.php?catid=1&id=772