Christobal: Anfängerfrage zu einer Passwortabfrage

Hallo zusammen,

ich bin blutjung zum Thema Php gekommen und wollte nun vor das eigentliche Forum eine Passwortabfrage ohne Benutzer stellen.

  
<div align="center">  
<img src="img/logoblack.jpg" alt="Logo-black">  
<form action="inhalt.php" method="post">  
<table border="0">  
<tr><td>  
<input type="pwd" name="pass">  
</td></tr>  
<tr><td align="center">  
<input type="submit" name="senden" value=Login>  
</td></tr>  
</table>  
</form>  
</div>  
</body>  
</html>

Dies ist die Startseite, ich habe die Eingabe des PW mit pass. Also wollte ich diese in der inhalt.php Seite bearbeiten:

<?php  
include("pwd.php");  
if ($password == "$pass")  
{  
echo '<meta http-equiv="refresh" content="0; URL=phorum/index.php" />';  
}  
else  
{  
echo 'Falsches Passwort';  
}  
?>

Die pwd.php enthält also das richtige Pw mit dem tag password.

Wenn ich jetzt den Versuch starte und das richtige Pw eingebe, wird mir immer "Falsches Passwort" angezeigt. Ich finde den Fehler nicht.

Ich hoffe ihr habt Zeit mir zu helfen und danke für die Zeit.

PS: Zum Thema Sicherheit. Ich weiß, dass das ganze mit irgendwelchen Befehlen umgangen werden kann, die die Werte aus der pwd Datei holen können, aber mehr liegt zur Zeit nicht in meinen Möglichkeiten... Wer bessere und für mich realisierbare Vorschläge hat, immer her damit.

  1. Hallo Christobal,

    zum einen müsste es
    <input type="password" name="pass">
    lauten, also der type sollte auf password gesetzt sien, damit das Passwort im Eingabefeld nicht ersichtlich ist. Oder gibt es auch einen Typ pwd?

    Mit der Verwendungd er Variablen $pass bist du schon nah dran. Ist jedoch in den Einstellungen von PHP register_globals auf off gesetzt, so werden übergebene Parameter nicht mehr automatisch in gleichnamige PHP Variablen umgewandelt. Dies ist heutzutage eigentlich gängige Praxis. Um dennoch an den Inhalt der Eingabe zu kommen, probier mal $_POST['pass'] zu verwenden. die PHP Variable $_POST wird befüllt, wenn Daten per POST Methode (hast Du im <form>-Tag als action=POST definiert) übergeben werden.
    $_GET wäre die zweite Variante bei Verwendung von method="GET" im form-Tag, mal davon abgesehen, dass es nicht sonderlich sinnvoll wäre, da die GET-Parameter in der URL übergeben werden und somit in der Historie des Browsers, in Proxis und sonstigenn Protokollen der Hosts, die dazwischen hängen sind ersichtlich.

    Grüße,
    the-FoX

    Hallo zusammen,

    ich bin blutjung zum Thema Php gekommen und wollte nun vor das eigentliche Forum eine Passwortabfrage ohne Benutzer stellen.

    <div align="center">
    <img src="img/logoblack.jpg" alt="Logo-black">
    <form action="inhalt.php" method="post">
    <table border="0">
    <tr><td>
    <input type="pwd" name="pass">
    </td></tr>
    <tr><td align="center">
    <input type="submit" name="senden" value=Login>
    </td></tr>
    </table>
    </form>
    </div>
    </body>
    </html>

    
    > Dies ist die Startseite, ich habe die Eingabe des PW mit pass. Also wollte ich diese in der inhalt.php Seite bearbeiten:  
    > ~~~php
    
    <?php  
    
    > include("pwd.php");  
    > if ($password == "$pass")  
    > {  
    > echo '<meta http-equiv="refresh" content="0; URL=phorum/index.php" />';  
    > }  
    > else  
    > {  
    > echo 'Falsches Passwort';  
    > }  
    > ?>
    
    

    Die pwd.php enthält also das richtige Pw mit dem tag password.

    Wenn ich jetzt den Versuch starte und das richtige Pw eingebe, wird mir immer "Falsches Passwort" angezeigt. Ich finde den Fehler nicht.

    Ich hoffe ihr habt Zeit mir zu helfen und danke für die Zeit.

    PS: Zum Thema Sicherheit. Ich weiß, dass das ganze mit irgendwelchen Befehlen umgangen werden kann, die die Werte aus der pwd Datei holen können, aber mehr liegt zur Zeit nicht in meinen Möglichkeiten... Wer bessere und für mich realisierbare Vorschläge hat, immer her damit.

    1. Danke, Danke, funktioniert perfekt jetzt mit $_POST. (zusätzlich positiv ist, dass jetzt die Zeichen verdeckt werden) Mit dem Type="pwd", da weiß ich auch nicht, was für ein Esel mich geritten hat...

      Danke nochmal.

      1. Jetzt habe ich doch noch eine anschluss Frage:

        Wie verhindere ich, dass ein gewiefter Internet Nutzer einfach die PW Abfrage überspringt, indem er den direkten Link zum Forum in der Adresszeile eingibt. Mal angenommen, man kann mit Hilfe von Befehlen, in Richtung "dir", die Datei Hierachie herausfinden? (Wovon ich doch mal ausgehe...)

        Ich meine mit htaccess in die richtige Richtung zu laufen?
        Leider finde ich keinen Befehl, der verhindert, dass auf einen folgenden Ordner zugegriffen werden kann, aber gleichzeitig offen lässt, dass man Serverseitig jemanden dort hinschickt.

        Ist das verständlich?

        1. Wie verhindere ich, dass ein gewiefter Internet Nutzer einfach die PW Abfrage überspringt, indem er den direkten Link zum Forum in der Adresszeile eingibt. Mal angenommen, man kann mit Hilfe von Befehlen, in Richtung "dir", die Datei Hierachie herausfinden? (Wovon ich doch mal ausgehe...)

          Du musst die Passwort-Abfrage direkt dort einbauen, wo du den Zugriffschutz haben wilst.

          Ich meine mit htaccess in die richtige Richtung zu laufen?

          mod_auth ist dafür geeignet, ja.

          Leider finde ich keinen Befehl, der verhindert, dass auf einen folgenden Ordner zugegriffen werden kann, aber gleichzeitig offen lässt, dass man Serverseitig jemanden dort hinschickt.

          Hä?

          Ist das verständlich?

          Nein :)

          Aber phorum (ich gehe davon aus) hat bereits einen Zugriffschutz - warum verwendest du den nicht?

          Sofern es nicht um kritische Dinge geht, kannst du gerne mit einem Zugriffschutz herumspielen und selbst versuchen einen zu erstellen - wenns "um etwas geht" solltest du aber die Finger davon lassen und auf eine etablierte fertige Lösung zurückgreifen.

          1. Leider finde ich keinen Befehl, der verhindert, dass auf einen folgenden Ordner zugegriffen werden kann, aber gleichzeitig offen lässt, dass man Serverseitig jemanden dort hinschickt.
            Hä?

            Also nehmen wir an im root Verzeichniss sind die Dateien für meine PW Abfrage. Dann folgt /phorum/index.php um zum eigentlichen Forum zu gelangen. Ich finde leider keinen Befehl, der den direkt Zugriff verhindert, aber die Weiterleitung durch meine PW Kontrolle erlaubt.
            Ich habs mit

            order deny,allow
            Options -Indexes

            versucht, aber keinen Erfolg gehabt.

            Sofern es nicht um kritische Dinge geht, kannst du gerne mit einem Zugriffschutz herumspielen und selbst versuchen einen zu erstellen - wenns "um etwas geht" solltest du aber die Finger davon lassen und auf eine etablierte fertige Lösung zurückgreifen.

            Spielerei und ich habe ehrlich gesagt keinen Grund, warum ich unbedingt den PW Schutz am Anfang haben will, als dass ich das so mal in einer Serie gesehen habe und das PW + die Adresse per Zettel verteilt wurden, was ich ziemlich witzig fand. Es gibt dem ganzen einen elitären Touch, wenn man noch nicht mal auf die Index Seite der Forum Software kommt.

            1. Tach!

              Also nehmen wir an im root Verzeichniss sind die Dateien für meine PW Abfrage. Dann folgt /phorum/index.php um zum eigentlichen Forum zu gelangen. Ich finde leider keinen Befehl, der den direkt Zugriff verhindert, aber die Weiterleitung durch meine PW Kontrolle erlaubt.

              Du musst dir das wie im ersten Leben vorstellen. Wenn du etwas schützen willst, musst du das gesamte Gebiet einzäunen oder darin jedes einzelne Gebäude separat absichern. Es reicht nicht, die Zufahrtsstraße mit einer Wache auszustatten und den Zaun wegzulassen.

              Auf das Webprojekt bezogen, brauchst du einen Zugriffsschutz für das gesamte Verzeichnis oder in beziehungsweise für jede zu schützende Resource einen eigenen. Bei einer fertigen Software nachträglich was einbauen zu wollen - noch dazu als Anfänger - halte ich für keine gute Idee. Bleibt also noch der HTTP-Auth-Schutz.

              Ich habs mit
              order deny,allow
              Options -Indexes
              versucht, aber keinen Erfolg gehabt.

              Zu Order fehlt auch immer noch Allow from und/oder Deny from und/oder Auth... mit Require.

              dedlfix.

              1. Moin!

                Ich habs mit
                order deny,allow
                Options -Indexes
                versucht, aber keinen Erfolg gehabt.

                Zu Order fehlt auch immer noch Allow from und/oder Deny from und/oder Auth... mit Require.

                Nein, "Allow from" oder "Deny from" fehlen nicht, Order hat einen Default-Value, das ist der letzte der beiden angegebenen Werte.

                Und das einzige, was Order/Allow/Deny machen kann, sind Zugriffsbeschränkungen auf IP-Basis. Authentifizierung gehört nicht dazu, weswegen deine argumentative Verbindung mittels "und/oder" zu Require nicht existiert. :)

                Es ist außerdem noch anzumerken, dass die jetzt programmierte Passwortlösung mit PHP nicht kompatibel ist zur Authentifizierungslösung mit .htaccess. Und ohne Usernamen geht die .htaccess-Lösung auch nicht.

                - Sven Rautenberg

                1. Also ist .htaccess der falsche Ansatz?

                  Aber es muss doch einen Weg geben die direkte Eingabe der Verzeichnisse in die Adresszeile zu verhindern?

                  1. Also ist .htaccess der falsche Ansatz?

                    Wie ich schon sagte: Phorum hat bereits eine ausreichende Benutzerauthentifizierung - warum du diese nicht verwenden willst ist mir ein Rätsel. Diese ist vermutlich eine Kombination aus PHP und mod_auth (um einerseits die von PHP generierten Inhalte zu schützen und anderseits die statischen Ressourcen (wie z.B. Bilder die von Benutzern hochgelanden wurden).

                    Jede halbwegs anständige Forensoftware kann sowas - ich kenne Phorum nicht, aber ein kurzer Blick in die Verzeichnisstruktur zeigt deutlich, dass relevante Verzeichnisse bereits im Auslieferungszustand .htaccess-Files enthalten, die stark auf einen entsprechenden Zugriffschutz hinweisen.

                    Aber es muss doch einen Weg geben die direkte Eingabe der Verzeichnisse in die Adresszeile zu verhindern?

                    Nein, das ist unmöglich - jeder kann in seine Adresszeile schreiben was er will und eine Anfrage an den Server stellen - es obliegt dann dem Server wie er diese Anfrage beantwortet.

                    1. Nein, das ist unmöglich - jeder kann in seine Adresszeile schreiben was er will und eine Anfrage an den Server stellen - es obliegt dann dem Server wie er diese Anfrage beantwortet.

                      Das meinte ich doch. Es muss eine Möglichkeit geben, den direkten Zugriff auf den Phorums Ordner zu verhindern.

                      Phorum hat wie jede andere Forumssoftware das schon integriert und es ist wie gesagt nur eine Spielerei mit der PW Eingabe zu Beginn.

                      ---Anderer Ansatz:

                      Müsste es nicht möglich sein, in die Index Datei von Phorum ein PHP Code zu schreiben, der besagt, wenn ich nicht von der Login Seite der Startseite komme, keinen Zugriff habe?
                      Ich möchte keinen vollständigen Code haben, sondern nur die Frage ob das möglich ist.

                      1. Om nah hoo pez nyeetz, Christobal!

                        Müsste es nicht möglich sein, in die Index Datei von Phorum ein PHP Code zu schreiben, der besagt, wenn ich nicht von der Login Seite der Startseite komme, keinen Zugriff habe?

                        Nein, dies ist nicht möglich.

                        Matthias

                        --
                        1/z ist kein Blatt Papier.

                        1. Nein, dies ist nicht möglich.

                          öm, schon. Referer? Session-Var.?

                          Aber das ist wohl eher nicht was der Fragesteller möchte, weil nicht ausreichend.

                          Die zentrale Frage war ja: was passiert, wenn der User die Adresse schon kennt?
                          Im Zuge dieser Frage werden hier zwei Sachen diskutiert: wie kann der User die Adresse rausfinden? Und: wie kann man als Betreiber verhindern, dass er diese Seite erreicht, wenn der sich nicht eingeloggt hat?

                          1. wenn Du verhindern willst, dass die Dateien auf deinem Server von einem bestimmten Verzeichnis aufgelistet werden, ist htaccess der richtige Weg.

                          2. Wenn Du verhindern willst, dass der User unautorisiert den INhalt der Seite sieht, ist ein Log-in-System fällig, wie verlinkt. Ich denke damit kannst Du es machen.

                          login-system mit htaccess sind auch zu realisieren, stehen allerdings nicht mit php in Verbindung, wie angesprochen.

                          Cheers,
                          Baba

                          1. Nein, dies ist nicht möglich.
                            öm, schon. Referer? Session-Var.?

                            Referrer is beliebig fälschbar und die Session selbst ist "Browserfensterübergreifend" - du kannst also direkt eine Detailseite aufrufen obwohl du irgendwann mal innerhalb deiner Session auf der Startseite warst aber nicht notwendigerweise direkt von dort kommst und zwischenzeitlich mal anderswo warst.

                            Die zentrale Frage war ja: was passiert, wenn der User die Adresse schon kennt?

                            Dann gibt es keinen Grund warum er sie nicht bookmarken sollen könnte - sofern es nicht grade irgend ein zwischenschritt in einem Bestellprozess ist oder ähnliches.

                            1. Wenn Du verhindern willst, dass der User unautorisiert den INhalt der Seite sieht, ist ein Log-in-System fällig, wie verlinkt. Ich denke damit kannst Du es machen.

                            login-system mit htaccess sind auch zu realisieren, stehen allerdings nicht mit php in Verbindung, wie angesprochen.

                            Und hierfür gibt es keinen Grund, nicht das Login-System von Phorum zu verwenden - ma ruft z.B. /viewforum.php?id=23 auf und anstatt der Forenübersicht bekommt man ein Login-Fenster oder den Hinweis, man möchte sich zuerst einloggen.

                            Wie schon gesagt: ohne das Forum im Detail zu kennen, das geht sicher.

                            1. Also ich hab erstmal genug Lesestoff, in den ich mich jetzt einarbeite. (referrer und Konsorten)
                              Ich danke euch erstmal für die Hilfe.

                              Als letzte Anmerkung noch:
                              Es wäre kein Problem, wenn eine Person die Forumsseite bookmarkt, wenn es heißt, dass er vorher die Passwort Kontrolle durchlaufen musste.

                              Ich hab Phorum natürlich so eingestellt, dass ohne Regestrierung nichts zu sehen ist, aber ich hatte gehofft, mit einem PW, das nur offline weitergegeben wird, eine nötige Überprüfung der Registrierung entgehen zu können. Da mir aber diese vorgeschaltete Variante zu unsicher ist, bleibe ich erstmal bei der Kombination von Beiden.

                              Also Danke nochmal für eure Zeit, große Hilfe!

                              1. Ich hab Phorum natürlich so eingestellt, dass ohne Regestrierung nichts zu sehen ist, aber ich hatte gehofft, mit einem PW, das nur offline weitergegeben wird, eine nötige Überprüfung der Registrierung entgehen zu können.

                                Das ist ein soziales Problem, welches du technisch nicht lösen kannst.

                                Für sowas gibts sogar eigene Dienste - einer der bekanntesten dürfte BugMeNot sein.

                      2. Tach!

                        Müsste es nicht möglich sein, in die Index Datei von Phorum ein PHP Code zu schreiben, der besagt, wenn ich nicht von der Login Seite der Startseite komme, keinen Zugriff habe?

                        Wie im ersten Leben. Der Wachschutz kann nicht kontrollieren, was du vorher gemacht hast. Wenn du ihm sagst, du kommst von X, dann kann das stimmen oder gelogen sein. Wenn X eine vertrauenswürdige Stelle ist, dann kann dort eine Beglaubigung ausgestellt werden, dass du dort warst. Und du musst sicherstellen oder hoffen, dass diese Beglaubigung nicht gefälscht ist.

                        Der Browser sendet einen Referrer mit. Der kann stimmen oder gefälscht sein. Da X in deinem Fall deiner Kontrolle unterliegt, kannst du dort einen eindeutigen Wert erzeugen, den du am Wachschutz kontrollierst.

                        dedlfix.

                  2. Om nah hoo pez nyeetz, Christobal!

                    Also ist .htaccess der falsche Ansatz?

                    ein anderer.

                    Eine weiteren einfachen Passwortschutz findest du im Wiki beschrieben.
                    Matthias

                    --
                    1/z ist kein Blatt Papier.

                    1. Om nah hoo pez nyeetz, Christobal!

                      Google sagt Star Trek?

                      Ich möchte ja eben keinen weiteren PW Schutz sondern den direkten Zugriff auf einen Ordner verhindern.

                  3. Hallo,

                    Also ist .htaccess der falsche Ansatz?
                    Aber es muss doch einen Weg geben die direkte Eingabe der Verzeichnisse in die Adresszeile zu verhindern?

                    Das kann man nicht verhindern.
                    Allerdings kann man dem Server sagen wenn Du eine anfrage nach http://www.example.com/das_verzeichnis bekommst, da such mal nach einer index.html, index.htm oder index.php, jenachdem!
                    ...und wenn die Datei da ist gebe diese zurueck.

                    vergleiche:

                    http://www.tommoon.de/download/index.php

                    http://www.tommoon.de/download/

                    Ulli