chris: Passwort abfragen, welches vorhanden ist

Hi zusammen. Ich habe hier sowas wie ein Gästebuch. Dort möchte ich folgende Funktion verbauen:
[CODE]
function checkName() {

if(document.getElementById('chk1').value == '<?php echo $admin; ?>') {
document.getElementById('chk2').innerHTML = '<br class=br5>Eintrag löschen<input type="checkbox" name="loeschen" value="ja">(Achtung - dies ist unwiderruflich!)<input type="hidden" name="d" value="<? echo $d;?>">';
}

}
[/CODE]

Es soll, wenn in einem Passwortfeld das richtige Passwort eingegeben wurde, der Text bzw. Code vom "innerHTML" angezeigt werden. So weit funktioniert das ganze auch.

Nun aber zu meinem Problem mit dem Passwort. Wie ihr seht, ist das Passwort bereits hinterlegt mit $admin. Wie kann ich das jetzt so dort abfragen, ohne das man es einfach im Quellcode nachsehen kann? Also wenn $admin eingegeben wurde, dann der Code angezeigt wird.

Ich hoffe ihr versteht was ich meine und könnt mir helfen mit einem Codeschnipsel oder ähnlichen Script, wo sowas schonmal verbaut wurde und ich mir das ansehen kann.

Danke schonmal!

  1. Ahoi chris,

    So schonmal garnicht, entweder machst du es komplett per PHP oder du musst dafür sorgen das das pwd nicht blank angezeigt wird, ein md5() könnte helfen, allerdings kennt JS standardmässig md5() oder ein anderes Codierungsformat meines Wissens nach nicht. allerdings hilft dir google solche "erweiterungen" zu finden.

    MfG

    1. So schonmal garnicht, entweder machst du es komplett per PHP oder du musst dafür sorgen das das pwd nicht blank angezeigt wird, ein md5() könnte helfen, allerdings kennt JS standardmässig md5() oder ein anderes Codierungsformat meines Wissens nach nicht. allerdings hilft dir google solche "erweiterungen" zu finden.

      Mag sein, dass man Javascript verschiedene Verschlüsselungsalgorithmen beibiegen kann, diese stellen jedoch keine Hürde für jemanden dar, der an das Passwort gelangen möchte. Sensible Daten wie Nutzerkennung und Passwort sind zwingend serverseitig zu überprüfen.

      Für den Fall des OP wäre eine AJAX-basierte Lösung denkbar:

      • Eingabe des Passwortes durch den Benutzer
      • Rückfrage beim Server via AJAX, ob das Passwort korrekt ist
      • im Erfolgsfall die entsprechenden HTML-Elemente dynamisch ergänzen

      Siechfred

      --
      Ein Selbständiger ist jemand, der bereit ist, 16 Stunden am Tag zu arbeiten, nur um nicht 8 Stunden für einen Anderen arbeiten zu müssen.
      1. Für den Fall des OP wäre eine AJAX-basierte Lösung denkbar:

        • Eingabe des Passwortes durch den Benutzer
        • Rückfrage beim Server via AJAX, ob das Passwort korrekt ist
        • im Erfolgsfall die entsprechenden HTML-Elemente dynamisch ergänzen

        Hi Siechfred, danke für deine Rückmeldung. Aber damit kenne ich mich genauso wenig aus.

        Gibt es da nicht beispiel-codes oder schon vorhandene Beispiele? Oder kannst du mir da konkret weiterhelfen?

        Wäre echt nett!

        1. Für den Fall des OP wäre eine AJAX-basierte Lösung denkbar:
          Gibt es da nicht beispiel-codes oder schon vorhandene Beispiele?

          Einen guten Einstieg in AJAX findest du hier:
          http://developer.mozilla.org/en/docs/AJAX:Getting_Started

          Siechfred

          --
          Ein Selbständiger ist jemand, der bereit ist, 16 Stunden am Tag zu arbeiten, nur um nicht 8 Stunden für einen Anderen arbeiten zu müssen.
    2. Moin!

      So schonmal garnicht, entweder machst du es komplett per PHP oder du musst dafür sorgen das das pwd nicht blank angezeigt wird, ein md5() könnte helfen, allerdings kennt JS standardmässig md5() oder ein anderes Codierungsformat meines Wissens nach nicht.

      Das Problem ist nicht das Klartextpasswort. Sondern dass man weiß, was passieren soll, wenn jemand das korrekte Passwort eingegeben hat. Denn selbst wenn man das Passwort nicht kennt, kann man die DOM-Veränderungen ja trotzdem vornehmen und so den Löschbefehl an den Server übermitteln.

      Ob der dann löschend reagiert, oder doch irgendwie das Passwort nochmal prüft, ist nicht zu erkennen. Ich würde davon allerdings angesichts der bisher präsentierten Codeausschnitte nicht ausgehen.

      - Sven Rautenberg

      --
      "Love your nation - respect the others."
      1. Das Problem ist nicht das Klartextpasswort. Sondern dass man weiß, was passieren soll, wenn jemand das korrekte Passwort eingegeben hat. Denn selbst wenn man das Passwort nicht kennt, kann man die DOM-Veränderungen ja trotzdem vornehmen und so den Löschbefehl an den Server übermitteln.

        Es sei denn, dass man erst via AJAX die DOM-Veränderungen mitgeteilt bekommt.

        Siechfred

        --
        Ein Selbständiger ist jemand, der bereit ist, 16 Stunden am Tag zu arbeiten, nur um nicht 8 Stunden für einen Anderen arbeiten zu müssen.
        1. hi,

          Denn selbst wenn man das Passwort nicht kennt, kann man die DOM-Veränderungen ja trotzdem vornehmen und so den Löschbefehl an den Server übermitteln.

          Es sei denn, dass man erst via AJAX die DOM-Veränderungen mitgeteilt bekommt.

          Auch das wäre nur security by obscurity.

          Die "DOM-Veränderungen" sind eigentlich uninteressant. Über sie wird letztendlich ein Request an den Server ausgelöst, der dort irgendeine Aktion triggert. Erlange ich Kenntnis vom Aufbau dieses Request, interessiert mich kein einzelner "DOM-Knoten" mehr.

          gruß,
          wahsaga

          --
          /voodoo.css:
          #GeorgeWBush { position:absolute; bottom:-6ft; }
          1. Auch das wäre nur security by obscurity.

            Finde ich nicht.

            Die "DOM-Veränderungen" sind eigentlich uninteressant.

            Wieso, es sollen doch irgendwelche Löschmöglichkeiten eingefügt werden.

            Über sie wird letztendlich ein Request an den Server ausgelöst, der dort irgendeine Aktion triggert. Erlange ich Kenntnis vom Aufbau dieses Request, interessiert mich kein einzelner "DOM-Knoten" mehr.

            Ehrlich gesagt verstehe ich nicht, worauf du hinaus willst (leerer Bauch, du verstehst ;) ). Meine Idee wäre einfach die, dass nach Passworteingabe eine serverseitige Prüfung desselben erfolgt, der Server liefert eine kleine XML-Datei, welche die zu ergänzenden HTML-Elemente enthält. Das kann bspw. auch eine Fehlermeldung sein.

            Allerdings wäre es sicher sinnvoller, zusammen mit dem Passwort die zu löschenden Daten gleich mit zu übermitteln, ganz ohne Javascript.

            Siechfred

            --
            Ein Selbständiger ist jemand, der bereit ist, 16 Stunden am Tag zu arbeiten, nur um nicht 8 Stunden für einen Anderen arbeiten zu müssen.
            1. hi,

              Auch das wäre nur security by obscurity.

              Finde ich nicht.

              Doch.

              Ehrlich gesagt verstehe ich nicht, worauf du hinaus willst (leerer Bauch, du verstehst ;) ). Meine Idee wäre einfach die, dass nach Passworteingabe eine serverseitige Prüfung desselben erfolgt, der Server liefert eine kleine XML-Datei, welche die zu ergänzenden HTML-Elemente enthält.

              Gut, ich bekomme diese "HTML-Elemente" also nur mit richtigem Passwort.
              Diese HTML-Elemente selber löschen aber gar nichts.
              Sie sind ggf. dazu geeignet, mit dem Browser einen Request auszulösen, der den Server dazu bringt irgendetwas zu löschen.

              Wenn du _nur_ das Holen dieser HTML-Elemente per Passwort sicherst, den Lösch-Request aber nicht - dann basiert deine gesamte Sicherheit darauf, dass ich die Parameter des Lösch-Requests nicht kenne.

              Das _ist_ "security by obscurity".

              Allerdings wäre es sicher sinnvoller, zusammen mit dem Passwort die zu löschenden Daten gleich mit zu übermitteln, ganz ohne Javascript.

              Natürlich.
              Das müssen wir jetzt nur noch dem Chris klargemacht bekommen :-)

              gruß,
              wahsaga

              --
              /voodoo.css:
              #GeorgeWBush { position:absolute; bottom:-6ft; }
              1. Auch das wäre nur security by obscurity.
                Finde ich nicht.
                Doch.

                Nö. ;)

                Wenn du _nur_ das Holen dieser HTML-Elemente per Passwort sicherst, den Lösch-Request aber nicht - dann basiert deine gesamte Sicherheit darauf, dass ich die Parameter des Lösch-Requests nicht kenne.

                Die Überlegung hat was. Dann geben wir eben in der Serverantwort ein Hidden-Field mit einer Session-ID mit, die bei der serverseitigen Prüfung des Passwortes im Erfolgsfall angelegt wurde. Die wird dann im neuern Request mit angegeben, und schon lässt sich prüfen, ob der User sich zuvor via Adminpasswort angemeldet hat.

                Das _ist_ "security by obscurity".

                Immer noch?

                Das müssen wir jetzt nur noch dem Chris klargemacht bekommen :-)

                Ich hoffe, dass wir da bei ihm auf offene Ohren stoßen :)

                Siechfred

                --
                Ein Selbständiger ist jemand, der bereit ist, 16 Stunden am Tag zu arbeiten, nur um nicht 8 Stunden für einen Anderen arbeiten zu müssen.
  2. Hi!

    Wie kann ich das jetzt so dort abfragen, ohne das man es einfach im Quellcode nachsehen kann?

    Gar nicht. Jedenfalls nicht mit Javascript.
    JS ist eine clientseitige Sprache. Du kannst keinen wirklich guten Paßwortschutz mit JS implementieren.
    Du kannst das PW natürlich "verschlüsselt" anstatt im Klartext im Quellcode unterbringen.
    Da aber dann auch der Code zum "Entschlüsseln" deines PW dort steht, bringt das nicht viel.
    Du kannst es dem User zwar ein klein wenig schwerer machen, aber das ist in keinem Fall sicher.

    Da du aber eine serverseitige Sprache (PHP) zur Verfügung hast, solltest du den Paßwortschutz  in jedem Fall damit umsetzen.

    Schöner Gruß,
    rob

    1. Da du aber eine serverseitige Sprache (PHP) zur Verfügung hast, solltest du den Paßwortschutz  in jedem Fall damit umsetzen.

      Hi, ich will doch kein Passwortschutz! Das Passwort ist ja schon vorhanden. Mit diesem Passwort kann man beispielsweise alle beiträge bearbeiten ohne das kennwort des Beitragerstellers zu wissen.

      Eigentlich geht es mir nur darum, dass wenn dieses Adminpasswort eingegeben wurde, der beschrieben Teil angezeigt wird.

      Also ich brauche kein neuen Passwortschutz oder ähnliches...

      Oder kann man dies vielleicht nur mit PHP lösen? Also ohne dieses javascript?

      Danke schonmal

      1. Hi, ich will doch kein Passwortschutz!

        Warum fragst du dann ein Passwort ab?

        Das Passwort ist ja schon vorhanden. Mit diesem Passwort kann man beispielsweise alle beiträge bearbeiten ohne das kennwort des Beitragerstellers zu wissen.

        Genau das ist das Problem. Ein Unberechtigter schaut in den Quelltext der Seite, sieht das ihm bis dato unbekannte Admin-Passwort im Javascript-Teil, gibt es ein und schon kann er frei von der Leber weg löschen.

        Eigentlich geht es mir nur darum, dass wenn dieses Adminpasswort eingegeben wurde, der beschrieben Teil angezeigt wird.

        Siehe dazu meinen Vorschlag.

        Siechfred

        --
        Ein Selbständiger ist jemand, der bereit ist, 16 Stunden am Tag zu arbeiten, nur um nicht 8 Stunden für einen Anderen arbeiten zu müssen.
      2. Hi!

        Oder kann man dies vielleicht nur mit PHP lösen? Also ohne dieses javascript?

        Wenn da das mit JS machst, dann kann jeder, der einen Blick in den Quellcode wirft, Zugang zu deiner Site bekommen.
        Du mußt das in jedem Fall serverseitig lösen.

        Schöner Gruß,
        rob

      3. Moin!

        Eigentlich geht es mir nur darum, dass wenn dieses Adminpasswort eingegeben wurde, der beschrieben Teil angezeigt wird.

        Dann löse das serverseitig mit dem dir zur Verfügung stehenden PHP: Wenn der Admin eingeloggt ist, schreibe zusätzliches HTML in die Webseite, ansonsten nicht.

        Oder kann man dies vielleicht nur mit PHP lösen? Also ohne dieses javascript?

        So ist es. Javascript allein hilft dir hier kein Stückchen weiter, alles schützenswerte mußt du in PHP realisieren. Javascript erhöht allenfalls den Bedienkomfort beim Administrieren.

        - Sven Rautenberg

        --
        "Love your nation - respect the others."
        1. Dann löse das serverseitig mit dem dir zur Verfügung stehenden PHP: Wenn der Admin eingeloggt ist, schreibe zusätzliches HTML in die Webseite, ansonsten nicht.

          Es gibt kein Loginsystem. Es gibt nur dieses Adminpasswort welches quasi über jedem anderem steht. (Was ich bei jedem Beitrag nutzen kann um zu ändern oder löschen)
          Also funktioniert das so jetzt nicht so einfach.

          Hoffe du verstehst was ich meine?!

          1. hi,

            Es gibt kein Loginsystem. Es gibt nur dieses Adminpasswort welches quasi über jedem anderem steht.

            Gut, aber das muss ja irgendwo mal überprüft werden. _Wo_ passiert das?
            Es clientseitig zu überprüfen, ist Unfug.
            Erstens kann es da jeder sehen, und zweitens sieht auch jeder, was passieren soll, wenn das richtige Passwort eingegeben wurde - also braucht mal es gar nicht kennen, sondern kann die entsprechende Aktion auch so auslösen.

            Hoffe du verstehst was ich meine?!

            Hoffe, du verstehst jetzt, was alle anderen hier dir zu sagen versuchen.

            Wenn du eine schützenswerte serverseitige Aktion von einem Password abhängig machen willst - dann überprüfe das Passwort auch serverseitig.

            gruß,
            wahsaga

            --
            /voodoo.css:
            #GeorgeWBush { position:absolute; bottom:-6ft; }
            1. Es gibt kein Loginsystem. Es gibt nur dieses Adminpasswort welches quasi über jedem anderem steht.

              Gut, aber das muss ja irgendwo mal überprüft werden. _Wo_ passiert das?

              Hi wahsaga, ich würde ja das script an sich mal hochladen, damit ihr wisst wie es aufgebaut ist. Soll ich es machen?
              Ich habe es auch nur im netz gefunden und auf meine Bedürfnisse angepasst.

              Ich habe es mal hier hochgeladen wo du es Dir ansehen kannst. Wie gesagt, würde ja auch en Quellcode mal zeigen, kann ich Dir den mal zusenden?

              1. hi,

                ich würde ja das script an sich mal hochladen, damit ihr wisst wie es aufgebaut ist. Soll ich es machen?

                Wozu?

                Ich habe es mal hier hochgeladen wo du es Dir ansehen kannst. Wie gesagt, würde ja auch en Quellcode mal zeigen, kann ich Dir den mal zusenden?

                Nein, kein Interesse.

                Es geht darum, dass _du_ verstehen musst, wie und vor allem wo du die Passwortprüfung sinnvoll vornimmst.

                Tipps und Hinweise dazu hast du jetzt schon eine ganze Reihe bekommen.

                gruß,
                wahsaga

                --
                /voodoo.css:
                #GeorgeWBush { position:absolute; bottom:-6ft; }
                1. Wozu?

                  Weil DU gefragt hast, wo was da vorgenommen wird. Und ich dazu geschrieben habe, dass ich das Script auch nur aus dem Internet habe und es auf meine Bedürfnisse angepasst habe. Also ich nicht der Programmierer dieses Script bin.

                  Es geht darum, dass _du_ verstehen musst, wie und vor allem wo du die Passwortprüfung sinnvoll vornimmst.

                  s.o.

                  Tipps und Hinweise dazu hast du jetzt schon eine ganze Reihe bekommen.

                  Wo denn? Das was andere vorgeschlagen haben, wurde ja für "nicht gut" beurteilt. Von daher weiß ich jetzt immer noch nicht was ich machen kann.

                  Deshalb habe ich ja geschrieben, ob man mir da nicht ein Beispiel-Code oder ähnliches geben könnte.

                  Gruß

                  1. hi,

                    Weil DU gefragt hast, wo was da vorgenommen wird.

                    Und das habe ich gefragt, weil ich von DIR erklärt haben wollte, was DEIN Script wie und wo macht.

                    Und ich dazu geschrieben habe, dass ich das Script auch nur aus dem Internet habe und es auf meine Bedürfnisse angepasst habe. Also ich nicht der Programmierer dieses Script bin.

                    Du wirst es doch aber sicher so weit analysiert haben, dass du verstehst, was es wann, wie und wo macht?

                    Tipps und Hinweise dazu hast du jetzt schon eine ganze Reihe bekommen.
                    Wo denn? Das was andere vorgeschlagen haben, wurde ja für "nicht gut" beurteilt. Von daher weiß ich jetzt immer noch nicht was ich machen kann.

                    Übergebe das vom User eingegebene Passwort zusammen mit der Anweisung, irgendwas zu löschen, an den Server. Lasse den Server das Löschen nur dann durchführen, wenn das Passwort stimmt.

                    gruß,
                    wahsaga

                    --
                    /voodoo.css:
                    #GeorgeWBush { position:absolute; bottom:-6ft; }
                    1. Weil DU gefragt hast, wo was da vorgenommen wird.

                      Und das habe ich gefragt, weil ich von DIR erklärt haben wollte, was DEIN Script wie und wo macht.

                      Ach mensch, es ist doch aber nicht mein Script! Bin froh, dass ich so was überhaupt gefunden habe, das meinen Ansprüchen genügt. Habe farben, Text usw. angepasst, aber nicht den Quellcode. Wenn ich dies könnte, hätte ich mir ja alleine ein Script schreiben können.

                      Und ich dazu geschrieben habe, dass ich das Script auch nur aus dem Internet habe und es auf meine Bedürfnisse angepasst habe. Also ich nicht der Programmierer dieses Script bin.

                      Du wirst es doch aber sicher so weit analysiert haben, dass du verstehst, was es wann, wie und wo macht?

                      Nein, warum auch wenn es so alles funktioniert?

                      Tipps und Hinweise dazu hast du jetzt schon eine ganze Reihe bekommen.
                      Wo denn? Das was andere vorgeschlagen haben, wurde ja für "nicht gut" beurteilt. Von daher weiß ich jetzt immer noch nicht was ich machen kann.

                      Übergebe das vom User eingegebene Passwort zusammen mit der Anweisung, irgendwas zu löschen, an den Server. Lasse den Server das Löschen nur dann durchführen, wenn das Passwort stimmt.

                      Ich sehe schon, man kommt nicht weiter. Das was du hier schreibst sind bömische Dörfer für mich. Das kann man nur als Programmierer umsetzen.

                      Naja, dann muss ich mich anderweitig umsehen.

                      Trotzdem schönen Dank, das du es wenigstens probiert hast. :)