Ankündigung

Einklappen
Keine Ankündigung bisher.

Ist mail() sicher?

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

  • Ist mail() sicher?

    Hallo,
    ich bin gerade eben neu hier eingestiegen. Ich bin mir auch nicht ganz sicher, ob ich an der richtigen Stelle frage, aber ich versuchs mal:

    Es geht um ein Kontaktformular welches mit dem Befehl mail() eine eMail sendet.

    Wenn ein User ein Kontakt-Formular auf einer Webseite mit SSL Zertifikat via "https://" ausfüllt und abschickt, dann ist der Weg seiner Daten vom User-PC zum WebServer verschlüsselt. So weit - so klar. Auf dem WebServer schickt nun ein PHP Skript die Userdaten z.B. via mail() zum MailServer. Dieser Transportweg, also genau die Strecke vom WebServer zum MailServer ist ohne besondere Massnahmen unverschlüsselt - richtig?
    Die Abholung der Mail vom MailServer zum MailClient des Webseitenbetreibers, also z.B. Outlook, ist wiederum verschlüsselt, da die Mails via SSL abgeholt werden.

    Nach langer Recherche habe ich mir nun was zusammengebastelt, was den Inhalt der Mail vom Kontaktformular (per S/MIME) zunächst verschlüsselt und dann via mail() abschickt. Funktioniert ganz gut. Kommt verschlüsselt einwandfrei an und kann nur mit installiertem S/MIME Zertifikat wieder entschlüsselt und gelesen werden.

    Meine Frage ist nun: Ist so ein Aufwand (nach DSGVO) nötig oder nicht? Der 1&1 Support behauptet z.B. dass interne Wege - also vom WebServer bei 1&1 zum MailServer bei 1&1 sowieso verschlüsselt seien, aber wem kann man heute noch vertrauen...?

    Fazit: Sind Daten vom Kontaktformular via https bis zur Mail-Abholung via SSL sicher?

    Danke für eine Antwort.

    Gruß, Beamstream


  • #2
    Bitte die Forenregeln zu Rechtsfragen beachten.

    MOD: Verschoben von "Gruppen" ins Forum.
    Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
    PHP.de Wissenssammlung | Kein Support per PN

    Kommentar


    • #3
      Also wenn du S/MIME zum verschlüsseln nutzt, dann hast du eine Ende-zu-Ende Verschlüsselung. Ob die Übertragungswege dabei verschlüsselt sind, ist für den Inhalt im Prinzip egal.
      Mit der DSGVO wirst du dann aber trotzdem Probleme bekommen, weil die Meta-Informationen, die zum Versand nötig sind, nicht verschlüsselt werden (geht technisch nicht). Also müssen die Transportwege ebenfalls verschlüsselt sein.
      Das ganze kannst du auch aus einer technischen Richtlinie des BSI herauslesen: https://www.bsi.bund.de/SharedDocs/D...cationFile&v=4

      Speziell 3.2 beschreibt die technischen Anforderungen für die Kommunikation mit dem Benutzer (Kontaktformular) und der Kommunikation der E-Mail Dienste untereinander. Mit S/MIME würdest du dann auch die Empfohlene PKI erfüllen.

      "Software is like Sex, it's best if it's free." - Linus Torvalds

      Kommentar


      • #4
        Verwende zum Senden eine Mailerklasse, die SMTP mit SSL unterstützt.
        Competence-Center -> Enjoy the Informatrix
        PHProcks!Einsteiger freundliche Tutorials

        Kommentar


        • #5
          Zitat von JaMa Beitrag anzeigen
          weil die Meta-Informationen, die zum Versand nötig sind, nicht verschlüsselt werden (geht technisch nicht). Also müssen die Transportwege ebenfalls verschlüsselt sein.
          DIME/DMTP/DMAP hat ja den Anspruch genau sowas zu schaffen.

          Kommentar


          • #6
            Zitat von tomBuilder Beitrag anzeigen

            DIME/DMTP/DMAP hat ja den Anspruch genau sowas zu schaffen.
            Glaube aber nicht dass das in Zukunft den regulären Internetverkehr ersetzen wird. Würde es begrüßen, aber naja.
            "Software is like Sex, it's best if it's free." - Linus Torvalds

            Kommentar


            • #7
              Okay. Vielen Dank für die rasche Beantwortung. Es macht also Sinn, den gesamten Transportweg und nicht nur den Mail Inhalt zu verschlüsseln. Ich habe heute viel mit der Klasse SwiftMailer rumexperimentiert und nix funktionierendes hingekrigt. Ich habe hier heruntergeladen, einige Code-Beispiele aus dem Netz probiert und auch kräftig variiert aber es endet immer in einer Fehlermeldung, zuletzt wars:

              Fatal error: Uncaught ReflectionException: Class Egulias\EmailValidator\EmailValidator does not exist in /homepages/25/d292328886/htdocs/beamstream.de/swiftmailer/lib/classes/Swift/DependencyContainer.php:327 Stack trace: #0 /homepages/25/d292328886/htdocs/beamstream.de/swiftmailer/lib/classes/Swift/DependencyContainer.php(327): ReflectionClass->__construct('Egulias\\EmailVa...') #1 /homepages/25/d292328886/htdocs/beamstream.de/swiftmailer/lib/classes/Swift/DependencyContainer.php(341): Swift_DependencyContainer->createNewInstance('email.validator') #2 /homepages/25/d292328886/htdocs/beamstream.de/swiftmailer/lib/classes/Swift/DependencyContainer.php(117): Swift_DependencyContainer->createSharedInstance('email.validator') #3 /homepages/25/d292328886/htdocs/beamstream.de/swiftmailer/lib/classes/Swift/DependencyContainer.php(389): Swift_DependencyContainer->lookup('email.validator') #4 /homepages/25/d292328886/htdocs/beamstream.de/swiftmailer/lib/classes/Swift/DependencyContainer.php(366): Swift_DependencyContainer->lookupR in /homepages/25/d292328886/htdocs/beamstream.de/swiftmailer/lib/classes/Swift/DependencyContainer.php on line 327

              Code:
              <?php
              
              require_once 'lib/swift_required.php';
              
              // Create the mail transport configuration
              #$transport = Swift_MailTransport::newInstance();
              
              
              // Create the Transport the call setUsername() and setPassword()
              #$transport = (new Swift_SmtpTransport('smtp.1und1.de', 25))
              #  -> setUsername('username')
              #  -> setPassword('password');
              
              // Create the SMTP configuration
              #$transport = Swift_SmtpTransport::newInstance("smtp.1und1.de", 25);
              $transport = new Swift_SmtpTransport('smtp.1und1.de', 587, 'ssl');
              $transport -> setUsername("will@xxxxxxx.de");
              $transport -> setPassword("xxxxxxxx");
              
              
              // Create the message
              #$message = Swift_Message::newInstance();
              
                  // Create a message
                  $message = new Swift_Message();
              
              
              #$message->setTo(array(
              #  "info@home.de" => "Beamstream",
              #  "test@xxx.de" => "Audero"
              #));
              #$message->setSubject("This email is sent using Swift Mailer");
              #$message->setBody("You're our best client ever.");
              #$message->setFrom("will@xxxxx.de", "Will");
              
                  // Set a "subject"
                  $message->setSubject('Demo message using the SwiftMailer library.');
              
                  // Set the "From address"
                  $message->setFrom(['me@gmail.com' => 'Will']);
              
                  // Set the "To address" [Use setTo method for multiple recepients, argument should be array]
                  $message->addTo('info@home.de','Beamstream');
              
              
              
              // Send the email
              #$mailer = Swift_Mailer::newInstance($transport);
              #$mailer->send($message);
              
                  // Create the Mailer using your created Transport
                  $mailer = new Swift_Mailer($transport);
              
              
                          // Send the message
                  $result = $mailer->send($message);
              ?>
              Gibt es irgendwo ein Code-Example-Paket welches einfach nur funktioniert? Die Resourcen-Dateien müssen ja alle in meinem Download von GitHub enthalten sein, gehe ich mal von aus...

              Erneuten Dank für jede Hilfe die Klasse zum Laufen zu bringen!

              Kommentar


              • #8
                Du musst Swiftmailer über Composer installieren. Er sagt dir, dass dir eine Thirdparty-Library fehlt.
                Composer löst alle Dependencies auf und installiert diese dann.
                "Software is like Sex, it's best if it's free." - Linus Torvalds

                Kommentar


                • #9
                  Zitat von JaMa Beitrag anzeigen

                  Glaube aber nicht dass das in Zukunft den regulären Internetverkehr ersetzen wird. Würde es begrüßen, aber naja.
                  Da dürftes Du Recht haben, ledeir.
                  Ich wollte das nur anmerken, da mir absolute Statements, welche mehr oder minder esotherische Lösungen ausblenden, ergänzungsbedürftig erscheinen.
                  Zudem bin ich ja auch superpedantisch zur Zeit.

                  Kommentar


                  • #10
                    Danke für die Infos. Swiftmailer über Composer installieren? Heisst das, dass ich auf einem gehosteten WebServer von 1&1 etwas installieren muss? Ich meine, geht das darüber hinaus, ein paar notwendige Dateien in das Verzeichnis meiner Wahl zu stellen? Muss ich Zugriff auf die php.ini oder sonstige *.ini Dateien haben? Habe ich nämlich nicht...

                    Kommentar


                    • #11
                      Nein geht es nicht, hier irgendwo muss ein quicksartguide von tr0y rumhängen.
                      Composer ist ein InstallationsWerkzeug, welches Abhjängigkeiten auflöst und einen autoloader generiert.

                      edit:

                      https://php-de.github.io/jumpto/composer/

                      Kommentar


                      • #12
                        Zitat von Beamstream Beitrag anzeigen
                        Danke für die Infos. Swiftmailer über Composer installieren? Heisst das, dass ich auf einem gehosteten WebServer von 1&1 etwas installieren muss? Ich meine, geht das darüber hinaus, ein paar notwendige Dateien in das Verzeichnis meiner Wahl zu stellen? Muss ich Zugriff auf die php.ini oder sonstige *.ini Dateien haben? Habe ich nämlich nicht...
                        Du kannst Composer ausschließlich lokal auf deinem Rechner nutzen, dort lässt du die Dependencies in dein Projektverzeichnis installieren und lädst dann alles zusammen auf den Webspace hoch (inkl. vendor Verzeichnis). Allerdings musst du dann Updates von Dependencies immer manuell hochladen.
                        Alternativ dazu kannst du Composer auf dem Webspace nutzen (funktioniert auch bei 1&1). In dem Fall lädst du nur deine Source-Files und die composer.json hoch und installierst dann die Abhängigkeiten auf dem Webspace mit Composer. Vorteil hierbei ist, dass du einfach aktualisieren kannst (ein Befehl) und weniger Dateien hochladen musst.
                        "Software is like Sex, it's best if it's free." - Linus Torvalds

                        Kommentar


                        • #13
                          Warum immer composer?!
                          https://www.php-rocks.de/thema/91-ht...iftmailer.html
                          Competence-Center -> Enjoy the Informatrix
                          PHProcks!Einsteiger freundliche Tutorials

                          Kommentar


                          • #14
                            Zitat von Arne Drews Beitrag anzeigen
                            Schönes Tutorial, aber die Links funktionieren zum einen nicht mehr und zum anderen gibt es keine aktuellen packaged Downloads mehr von SwiftMailer.
                            Also nutze ich doch lieber Composer als das alles manuell machen zu müssen was Composer machen würde.
                            "Software is like Sex, it's best if it's free." - Linus Torvalds

                            Kommentar


                            • #15
                              Danke für den Hinweis, Downloadlink habe ich eben angepasst.
                              Werde mit dem aktuellem Paket heute Abend mal testen und ggf. das Tutorial anpassen.

                              Du kannst composer gern benutzen, Du wirst das sicher öfter schon verwendet haben, wenn es nicht sogar eins Deiner alltgl. Werkzeuge ist?!
                              Mich stört einfach nur, dass jedem "Einsteiger/Anfänger" sofort zu composer geraten wird, nur weil es mal bei der Einbindung hapert.
                              Competence-Center -> Enjoy the Informatrix
                              PHProcks!Einsteiger freundliche Tutorials

                              Kommentar

                              Lädt...
                              X