kostenloser Webspace werbefrei: lima-city


Geschützer Bereich in PHP

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    crazybanana

    crazybanana hat kostenlosen Webspace.

    Hallo zusammen,
    ich möchte auf meiner Website gerne einen kennwortgeschützten Bereich einbauen. Dazu habe ich einen Login nach dieser http://html-php.de/index.php?seite=p_formular Anleitung gebaut, beim Testen aber festgstellt, dass das ja eigentlich nur Augenwischerei ist, weil die Seite an sich ja nicht geschützt ist sondern nur der Zugriff, sprich über den Link kann ich einfach auf die Seite zugreifen. Meinen beschränkten Programmierkentnissen nach, muss ich beim Login Vorgang eine Variable auf True setzen und diese dann am Anfang der Seite abfragen lassen, oder? Beim Logout Vorgang würde ich die Variable dann ja einfach wieder auf False setzen. Aber wie setzte ich das in PHP um? Und funktioniert das auch für mehrere Seiten, also über einen gespeicherten Login?
    Vielen Dank schon mal
    crazybanana
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Hallo :wave:

    crazybanana schrieb:
    [...]weil die Seite an sich ja nicht geschützt ist sondern nur der Zugriff, sprich über den Link kann ich einfach auf die Seite zugreifen. Meinen beschränkten Programmierkentnissen nach, muss ich beim Login Vorgang eine Variable auf True setzen und diese dann am Anfang der Seite abfragen lassen, oder? Beim Logout Vorgang würde ich die Variable dann ja einfach wieder auf False setzen.


    Eigentlich macht man so etwas mit cookies/sessions.

    mfg :wave:
  4. crazybanana schrieb:
    [...] beim Testen aber festgstellt, dass das ja eigentlich nur Augenwischerei ist, weil die Seite an sich ja nicht geschützt ist sondern nur der Zugriff, sprich über den Link kann ich einfach auf die Seite zugreifen. [...]
    Ich denke, du redest von diese Skript:
    <?php
        $user = $_POST['name'];
        $pass = $_POST['pass'];
        $okuser = "Anwender" ;
        $okpass = "Passwort" ;
        if ($user == $okuser && $pass == $okpass) {
          echo "Korrekte Eingabe" ;
        } else {
          echo "Falsche Eingabe" ;
        }
      ?>
    Das ist so völlig in Ordnung. Der kleine Hinweistext "Korrekte Eingabe" ist geschützt und kann nur mit korrekten Zungangsdaten aufgerufen werden.

    Wie voloya schong geschrieben hat, kannst du Sessions verwenden, um einen Login zu speichern.
    Ich verlinke mal da drauf: http://www.schattenbaum.net/php/sessions.php
  5. Autor dieses Themas

    crazybanana

    crazybanana hat kostenlosen Webspace.

    Ok, mein Problem ist jetzt nur, wie ich es hin Kriege mehrere Seiten zu schützen. Wenn ich jetzt von der Geschützen Seite normal verlinke, ist die Seite ja zwar nicht direkt über die Bavigation erreichbar aber einfach so mit dem Link. Also wie Bau ich sowas? Mit Sessions kann ich jetzt mal gar nichts anfangen, da ich wirklich nur das allernötigste weiß
    EDIT: hab Grade auch nochmal den Link gelesen. Ist ja ziemlich gut erklärt. Werde erstmal versuchen das nachzubauen. Wenns Probleme gibt meld ich mich nochmal

    Beitrag zuletzt geändert: 27.8.2014 21:24:41 von crazybanana
  6. mbc-vogelweide

    Kostenloser Webspace von mbc-vogelweide

    mbc-vogelweide hat kostenlosen Webspace.

    Hi,

    ich kenne mich mit der Materie leider nicht so gut aus, dass ich dir einen hilfreichen Tip bzgl. deinem Script geben kann. Aber schau dir mal die Site an. Ich habe das in Verwendung und bin eigentlich ganz zufrieden damit.

    Gruß Reinhold

    http://www.marlight-music.de/
  7. thebigsmilexd

    Kostenloser Webspace von thebigsmilexd

    thebigsmilexd hat kostenlosen Webspace.

    Ich nutze Kekse (Cookies) und Sessions für mein Login und checke beim Anmelden der Nutzer in einer Datenbank, ob es ihre eingegebene Email gibt und ob ihr Passwort, welches eingegeben wurde der verschlüsselten Version in der Datenbank entspricht.
    Jede Seite, auf der nur spezielle User Rechte haben sollen, teste ich nach Cookies/Sessions
    if(($_SESSION['name']||$_COOKIE['name'])&&($_SESSION['pass']||$_COOKIE['pass']))
    {if($_SESSION['name']==$_COOKIE['name']&&$_SESSION['pass']==$_COOKIE['pass'])
    {if($_COOKIE['name']=="zugellassenername"&&$_COOKIE['pass']=="zugelassenespasswort")
    {TUEDASHIER}
    }
    }

    Ich hoffe ich konnte Helfen.
  8. Also über Session lässt sich das relativ einfach lösen.

    Ich gehe jetzt mal vom Scriptbeispiel oben aus.
    $user = $_POST['name'];
        $pass = $_POST['pass'];
        $okuser = "Anwender" ;
        $okpass = "Passwort" ;
        if ($user == $okuser && $pass == $okpass) {
          echo "Korrekte Eingabe" ;
        } else {
          echo "Falsche Eingabe" ;
        }



    Als erstes musst Du auf der Seite eine Session initialisieren, das muss IMMER als erstes passieren. Es reicht teilweise schon ein Lehrzeichen und das Script bockt rum.
    Darum als erstes
    session_start();



    In Deiner Abfrage setzt Du nun im Erfolgsfall die Sessionvariable für den User.

    $user = $_POST['name'];
        $pass = $_POST['pass'];
        $okuser = "Anwender" ;
        $okpass = "Passwort" ;
        if ($user == $okuser && $pass == $okpass) {
    	 
    	  // Der User ist berechtigt und bekommt eine session
    	$_SESSION["user"] = $user;
    
            } else {
    
    	// wenn das Login falsch war würde ich zurück auf die Loginseite gehen. 
    
          echo "Falsche Eingabe" ;
        }





    Nun liegt die Variable für den weiteren gebruach in der Session, wenn Du nun auf weiteren Seiten prüfen willst ob der User berechtigt ist, musst Du auf diesen Seiten auf die Session prüfen.

    Dabei gilt wieder, als ERSTES die Session !!

    session_start();
    
    if(!$_SESSION["user"])
    {
      echo "Keine Berechtigung";
    }
    else
    {
    	
    	// Erfolgreich geprüft, hier kommt der weitere Seiteninhalt
    	
    }


    Vieleicht hilft Dir das ja ein wenig weiter, was Du allerdings unbedingt noch Machen solltest ist dich vor sql injection schützen. Alles was der User eingibt sollte in Frage gestellt werden und geprüft.

    $user = mysql_real_escape_string($user),
    $pass = mysql_real_escape_string($password));



    LG Marco

    Tante Edit:

    Am Ende natürlich die Session löschen wenn der User sich ausloggt.
    Wenn Du mehrere Sessions hast dann kannst Du die über ein Array löschen,
    alternativ halt jede einzeln...

    $_SESSION = array();
    session_destroy();


    Beitrag zuletzt geändert: 28.8.2014 10:05:47 von aff3m1tw4ff3
  9. thebigsmilexd

    Kostenloser Webspace von thebigsmilexd

    thebigsmilexd hat kostenlosen Webspace.

    Danke, der letzte Post hat mir auch noch geholfen, ich konnte mich nach meinem Seitenupdate nicht ohne EditMyCookie abmelden...
    Da ich die Sessions nicht null setzen konnte.
  10. Zwar ein wenig veraltet, aber bei dem folgenden Link werden auch einige Sicherheitsaspekte behandelt die Du auf jeden Fall beachten solltest: http://tut.php-quake.net/de/login.html
  11. karlsve

    Moderator Kostenloser Webspace von karlsve

    karlsve hat kostenlosen Webspace.

    Da bisher schon einiges zur Lösung des Problems genannt wurde möchte ich nicht das alles noch einmal wiederholen.
    Ich werde allerdings einen sicherheitsrelevanten Aspekt ergänzen:

    Bei solchen Dingen die Nutzereingaben betreffen wäre folgendes auch nicht schlecht zu nutzen.
    http://php.net/manual/en/function.filter-input.php

    Ich habe für meine Seiten dafür spezielle Sicherheitsmechanismen gebastelt die diese Bereinigungen zu Beginn jedes Durchlaufs machen.

    Wer eine komplexere Seite erstellen will, zum Beispiel ein CMS, sollte sich überlegen ob die zu empfangenden Inhalte nicht auch vorher mit einem Typ gekennzeichnet registriert werden sollten. Dadurch kann man jegliche nicht registrierten Übergabewerte schon einmal aussortieren und stellen ein noch geringeres Sicherheitsrisiko dar.
  12. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!