Ankündigung

Einklappen
Keine Ankündigung bisher.

formularbestätigung mit Sicherheitslücke

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • formularbestätigung mit Sicherheitslücke

    Nachdem ich mein Formular endlich so hinbekommen habe wie ich es wollte war ich glücklich.

    Allerdings habe ich 2 Sicherheitslücken festgestellt.

    Ich wäre sehr froh wenn mir ein Profi von euch bei der Schließung dieser Lücken helfen könnte.

    Ich versuche jetzt einfach mal den Aufbau und die Funktionsweise des Formulars in Kurzform zu erläutern.

    kontaktformular.php :
    Formularfelder werden beim verlassen des Eingabefeldes auf bestimmte Karaktäre via Javaskript überprüft, vor dem absenden wird dies nochmals via php überprüft sonst kein absenden.

    exec_kontaktform.php :
    wenn das Formular abgesendet wurde geht's auf diese Seite wo eine Anmeldung bei der MySql Datenbank erfolgt und die Daten aus dem Formular in die Datenbank eingetragen werden. Desweiteren wird eine Nachricht generiert mit den daten aus dem Formular die mir als E-mail geschickt wird.
    wenn keine Fehler aufgetreten sind werde ich zur nächsten Seite weitergeleitet.

    kontaktform_confirm.php :
    Hier findet wieder eine Datenbankverbindung statt und die Daten der letzten Datenbank ID werden ausgelesen und auf der Seite angezeigt.

    das primäre Problem ist jetzt folgendes:
    Jede beliebige Person kann die "kontaktform_confirm.php" aufrufen und bekommt den von irgendeiner Person zuletz eingegebenen Datensatz angezeigt.

    Ich möchte erreichen das nur der Benutzer der das Formular ausgefüllt und abgesendet hat die Bestätigungsseite einmalig angezeigt bekommt. Was in diesem Fall die beste Lösung zur Umsetzung ist oder wie man das programmiert weis ich nicht.

  • #2
    Die einfachste Lösung sollten wohl Sessions sein, damit kannst du User recht einfach identifizieren.

    Die 2. Sicherheitslücke konnte ich dem Beitrag nicht entnehmen.
    [URL="http://php.net/manual/en/migration55.deprecated.php"]mysql ist veraltet[/URL] [URL="http://php-de.github.io/jumpto/mail-class/"]Mails senden: Ohne Probleme und ohne mail()[/URL]
    [PHP]echo 'PS: <b>Meine Antwort ist keine Lösung, sondern nur eine Hilfe zur Lösung.</b>';[/PHP]

    Kommentar


    • #3
      Jede beliebige Person kann die "kontaktform_confirm.php" aufrufen und bekommt den von irgendeiner Person zuletz eingegebenen Datensatz angezeigt.
      Es gibt verschiedene Ansätze. Ein naheliegender wäre, PHP-Skripte, die nicht von "außen" zugänglich sein sollen, in ein separates, geschütztes Verzeichnis auszulagern. Entweder, weil dieses Verzeichnis nicht in einem über das Web zugänglichen Ordner liegt, oder weil es explizit vor Zugriff geschützt wird (mit einer .htaccess-Datei). Dann können diese Skripte nur von anderen PHP-Skripten aufgerufen werden.

      Kommentar


      • #4
        Zitat von monolith Beitrag anzeigen
        Es gibt verschiedene Ansätze. Ein naheliegender wäre, PHP-Skripte, die nicht von "außen" zugänglich sein sollen, in ein separates, geschütztes Verzeichnis auszulagern. Entweder, weil dieses Verzeichnis nicht in einem über das Web zugänglichen Ordner liegt, oder weil es explizit vor Zugriff geschützt wird (mit einer .htaccess-Datei). Dann können diese Skripte nur von anderen PHP-Skripten aufgerufen werden.
        Die Möglichkeit ist auf jeden Fall besser als mein Vorschlag, packe die Funktionalität von "kontaktform_confirm.php" in eine Funktion und rufe diese in "exec_kontaktform.php" auf.
        [URL="http://php.net/manual/en/migration55.deprecated.php"]mysql ist veraltet[/URL] [URL="http://php-de.github.io/jumpto/mail-class/"]Mails senden: Ohne Probleme und ohne mail()[/URL]
        [PHP]echo 'PS: <b>Meine Antwort ist keine Lösung, sondern nur eine Hilfe zur Lösung.</b>';[/PHP]

        Kommentar


        • #5
          Naja, der Hinweis auf Sessions kann dem TE trotzdem weiter helfen. Daran hat er offenbar nicht gedacht; vielleicht fehlte da noch die Brücke im Geiste zwischen Einloggen und späterer Identifizierung des Users. Das könnte ihm deutlich machen, dass man Session benötigt um zu wissen, zu welchem User welcher Client gehört.

          Kommentar

          Lädt...
          X