PHP Login



  • Hab einen simplen PHP Login geschrieben:
    start.html

    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>Unbenanntes Dokument</title>
    </head>
    <body>
    <form action="login.php" method="post">
    	  <p>
               Username	
    	    <input type="text" size="24" maxlength="50" name="username">
    	<br>
             <br>
    	Password   
    	<input type="password" size="24" maxlength="50" name="passwort">
    	<br>
             <br>
    	<input type="submit" value="Login">
          </p>
      </div>
    </form>
    </body>
    </html>
    

    Und das login file das die Ueberpruefung durchfuehrt:
    login.php

    <?php
    
    	session_start();
    	$_SESSION['time'] = time();
    
    	$username = $_POST["username"];
    	$password = $_POST["passwort"];
    
    	$log = 0;
    ...
    ...
    ...
    ?>
    

    Nur wird das Passwort jetzt fuer alle sichtbar im HTTP uebertragen kann man das ganze vlt unterdruecken im HTTP oder verschluesseln?



  • HTTPS



  • Zu diesem Thema (also der abhörsicheren und nicht offenen Übertragung von Client zu Server) müssstest du dich wohl mit HTTPS auseinandersetzen. Auf Serverseite, um dort die Sicherheit zu erhöhen, solltest du deine Passwörter (wie auch immer sie gespeichert sein mögen) hashen und diese Hashes dann vergleichen. Das hat den Vorteil, dass du eine Aussage über die Gleichheit erhältst (durch die Prüfsummen), aber zu keiner Zeit das Passw in Klarform bekannt sein muss (außer bei der Übertragung über HTTP). MD5 ist in Php standardmäßig implementiert (auch wenn es nicht mehr als absolut sicher gilt). Ich denke aber, dass für deine Versuche an einem Loginsystem MD5 Summen durchaus angemessen sind (da du dir um die Implementierung eines Hashing Algorithmus keine Gedanken machen musst).

    Also rein experimentell könnte man auch versuchen auf Clientseite vor dem Submitten den Passworttext zu hashen. Ich weiß nicht inwieweit dies mit z.B. JavaScript zu bewerkstelligen ist. So wäre das Passw zu keiner Zeit der Übertragung bekannt, nur die Prüfsumme.



  • Das mit der Ueberpruefung im PHP file passt schon nur wird das Passwort welches in start.html eingegeben wird unverschluesselt an das PHP file gesendet (Ich kann es mit Wireshark auslesen!!)
    Wuerde das dann mit https nicht mehr sichtbar sein?



  • Das ist der Sinn hinter HTTPS abhörsichere HTTP Verbindungen zwischen Client und Server.



  • wie muesste ich denn dann meine start.html abaendern?



  • Das hat weniger etwas mit der Datei zu tun als viel mehr wie überträgst du, beließ dich mal zu HTTPS, da muss man das ein oder andere beachten.



  • Muesste man sich den string nicht einfach zusammenbauen?
    in etwa so:
    start.htmp -> start.php

    <?php
    if ($_SERVER['SERVER_PORT'] != 443) {
        $_SERVER['HTTP_HOST'] = "localhost";
        $_SERVER['PHP_SELF'] = "start.php";
        $_SERVER['QUERY_STRING'] = "page=login.php";
    
        $httpsurl = "https://".$_SERVER['HTTP_HOST'].$SERVER['PHP_SELF']."?".$_SERVER['QUERY_STRING'];
    
        ECHO "<form action=\"$httpsurl\" method=\"post\">";
    }
    ?>
    ...
    ...
    

  • Mod

    Typ222 schrieb:

    Muesste man sich den string nicht einfach zusammenbauen?

    Besser wäre es per mod_rewrite immer auf die https Variante weiter zuleiten. So dass es garnicht erst passieren kann dass die Authentifizierung über http stattfindet.


Anmelden zum Antworten