PHP Mailer für Mobirise Formular - finde den Fehler!

PHP, CSS und JavaScript lernen. Anwendungen für Webseiten
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 5744
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: PHP Mailer für Mobirise Formular - finde den Fehler!

Ungelesener Beitrag von Tommy Herrmann »

ich habe das jetzt nochmals mit dem Port: 587 getestet (den ich eigentlich immer verwende), das geht auch.

Die oberen beiden Zeilen habe ich zum Testen mit zwei Slash // deaktiviert und dafür den Port: 587 verwendet.

Code: Alles auswählen

// $mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS; // Implizite TLS-Verschlüsselung aktivieren Port 465
// $mail->Port = 465; // Port - Postausgangsserver (SMTP) 465
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS; // Implizite STARTTLS-Verschlüsselung aktivieren Port 587 alternativ
$mail->Port = 587; // Port - Postausgangsserver (SMTP) 587 alternativ
... nur falls jemand diesen alternativen Port mal benötigen sollte.
AnnaHertwig
Mitglied (Level 4)
Mitglied (Level 4)
Beiträge: 35
Registriert: Sa 26. Jun 2021, 15:40
Kontaktdaten:

Re: PHP Mailer für Mobirise Formular - finde den Fehler!

Ungelesener Beitrag von AnnaHertwig »

Klaus hat geschrieben: Do 22. Jul 2021, 09:41 ...
Das mit dem Witsec meinte ich auch so, der hat sich echt viel mühe gegeben.
Sogar die User/PWs nimmt er beim Publizieren aus der project.mobirise (soviel ich sehen kann).
Viele (auch Du) löschen die nach dem Publizieren nicht vom Server.
Hat für den Supportfall Vorteile ... oft stehen da aber auch alle möglichen Passwörter aus den PHP Scripten drinnen.
Hallo Klaus,
wie meinst du denn das? Ich habe bei dem Witsec diesen Hinweis gelesen "wird nach publizieren entfernt"
Wie ist denn das in dem SMTP Skript vom Werner - da steht ja auch das Passwort und der Benutzername drin. Kann man das einfach so auslesen, was da für Scripte auf dem Server liegen?

Habe schon extra als "Sende-E-Mail" eine neue Adresse angelegt, auf der nichts weiter liegt oder eingeht. Die ich also nur für diese Zwecke angelegt habe.

oder was kann man nach dem Publizieren so vom Server löschen, was keine Auswirkungen auf die Website hat? Bin da für Tipps sehr dankbar - denn so kriminell kann man immer gar nicht denken, was so an Daten geklaut wird.
Aber man soll es den Dieben ja auch nicht so leicht machen ;-)
Viele Grüße!
Benutzeravatar
Werner-Zenk.de
Mitglied (Level 10)
Mitglied (Level 10)
Beiträge: 755
Registriert: Di 8. Dez 2020, 19:42
Wohnort: Bamberg
Kontaktdaten:

Re: PHP Mailer für Mobirise Formular - finde den Fehler!

Ungelesener Beitrag von Werner-Zenk.de »

AnnaHertwig hat geschrieben: Do 22. Jul 2021, 19:05 Hallo Klaus,
wie meinst du denn das? Ich habe bei dem Witsec diesen Hinweis gelesen "wird nach publizieren entfernt"
Wie ist denn das in dem SMTP Skript vom Werner - da steht ja auch das Passwort und der Benutzername drin. Kann man das einfach so auslesen, was da für Scripte auf dem Server liegen?
Normalerweise werden PHP-Dateien über dem PHP-Interpreter geparst (übersetzt). Der Benutzer sieht dan davon nichts, kein PHP-Skript noch irgendwelche Einstellungen (Benutzername, Passwort etc.). Ich habe in den 20 Jahren, in denen ich mit PHP arbeite, nur zwei Seiten gesehen, in denen der PHP-Quellcode im Browser angezeigt wurde. Und das nur weil der Webmaster keine aktuelle PHP-Version auf dem Server hatte.

Seit einigen Jahren verlangen fast alle Provider für alte "PHP-Versionen" einen Extended Support wenn man alte PHP-Skripte nicht aktualisiert (auf dem neusten Stand bringt) und diese mit der bisherigen PHP-Version weiterlaufen sollen dann wird dieser "Extended Support" fällig.

Das kann man vermeiden, wenn der Entwickler des PHP-Scripts nur unterstützte Funktionen in das Skript einbaut.
Wenn da eine PHP-Funktion in Zukunft nicht mehr unterstützt wird, dann bekommt man "Jahre" zuvor als Entwickler eine Meldung das diese Funktion als "Deprecated" (Missbilligt) markiert wird und der Entwickler muss eine alternative Funktion nehmen.
Das war jetzt ein wenig viel Technik-Gequatsche .. ;)

Jedenfalls musst du dir keine Sorgen machen, meine Skripte laufen auch in neueren PHP-Versionen ohne Probleme weiter.
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 5744
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: PHP Mailer für Mobirise Formular - finde den Fehler!

Ungelesener Beitrag von Tommy Herrmann »

Das Skript von Werner kann niemand auslesen. Das ist ja vollkommen unabhängig von der Projektdatei von Mobirise.

Grundsätzlich sollte man nach dem Publizieren aber immer die Projektdatei:

project.mobirise

am Server löschen.

Man muss nur bei Mobirise aufpassen, wenn man PHP-Skripte über den Mobirise Code-Editor direkt einbaut. Dann können Passwörter in Klarschrift in dieser Datei project.mobirise stehen.

Ich kann da gerne morgen noch mehr zu schreiben, bin aber gerade nur am Handy.
Klaus
Supporter
Supporter
Beiträge: 440
Registriert: Mi 21. Jul 2021, 00:43

Re: PHP Mailer für Mobirise Formular - finde den Fehler!

Ungelesener Beitrag von Klaus »

Die SMTP Daten (Benuterz/Passwort ... usw.) die in MR eingetragen werden müssen ja so wie alle anderen Einstellungen irgendwo gespeichert werden.
MR macht das in der project.mobirise die sich lokal auf auf dem PC befindet.
"Dummerweise" publiziert MR diese Datei jedes mal mit auf den Server und so kann die auch jeder downloaden und reingucken.
(Das mag als Backup der Seite auf dem Server so einigermaßen taugen, sicher ist das aber so natürlich nicht.)

Bei dem Witsec Formular wird das ja hier eingetippt
mr1.JPG
und landet dann hier in der project.mobirise
mr2.JPG
durch ein spez. Skript des Formulars wird das aber aus der project.mobirise die hochgeladen wird entfernt
mr4.JPG
und ist dann auf dem Server (zum Glück) wenn es "sauber" läuft nicht mehr zu sehen.
mr3.JPG
mr3.JPG (24.23 KiB) 2366 mal betrachtet
Die SMTP Daten werden beim Publizieren in eine .php Datei eingefügt und sind dann so wie bei Werners Skripten wenn der Server keine Probleme hat normalerweise nicht zu lesen.

Aber selbst das könnte man noch besser gestalten wenn man sensible Daten in ein per .htaccess geschütztes Verzeichnis in eine .php Datei auslagert. ... dann müsste schon neben dem PHP Interpreter auch vom Webserver der Verzeichnisschutz ausfallen.
Benutzeravatar
Werner-Zenk.de
Mitglied (Level 10)
Mitglied (Level 10)
Beiträge: 755
Registriert: Di 8. Dez 2020, 19:42
Wohnort: Bamberg
Kontaktdaten:

Re: PHP Mailer für Mobirise Formular - finde den Fehler!

Ungelesener Beitrag von Werner-Zenk.de »

Die Zugangsdaten könnte man auch außerhalb des Document-Roots in einem Verzeichnis speichern. Da haben andere auch keinen Zugriff darauf.
Die Frage ist halt, wie vermittelt man jemanden der keine Ahnung von PHP hat solche Dinge?
Klaus
Supporter
Supporter
Beiträge: 440
Registriert: Mi 21. Jul 2021, 00:43

Re: PHP Mailer für Mobirise Formular - finde den Fehler!

Ungelesener Beitrag von Klaus »

... und dann wir einem die Kiste mit Directory Traversal aufgemacht. ;)
Ich sag nur SAT* und der Computer & Security "Experte" Peter H. ... lang is her.

Ne passt schon wer mehr Security will nimmt eh eigene Server mit z.B. Cloud Foundry und CredHub oder so wie wir unsere z15, da ist nicht nur die Platte sondern auch jeder Proz., der Speicher und auch sonst alles verschlüsselt ... ich sag immer da wird selbst der Strom am Eingang des Mainfraim verschlüsselt.
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 5744
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: PHP Mailer für Mobirise Formular - finde den Fehler!

Ungelesener Beitrag von Tommy Herrmann »

Moin,

solange Du die Projekt-Datei von Mobirise:

project.mobirise

am Server, nach dem entfernten Publizieren, immer schön löschst, kann gar nichts passieren - viele benennen diese dann am Server auch um, was mir persönlich zu unsicher ist.

Ich lösche diese grundsätzlich nach jeder entfernten Publizierung am Server.

Die Projekt-Datei "project.mobirise" ist zwingend zum Öffnen oder auch für eine Wiederherstellung (Import) eines Mobirise-Projektes notwendig. Ohne diese Projekt-Datei ist ein Mobirise-Projekt unwiderruflich verloren.

Die Datei wird aber auch beim Öffnen und Schließen der Software sowie beim lokalen Publizieren von Mobirise generiert und von jeder Projekt-Datei wird zusätzlich mit jeder Änderung ein Backup (mit Datum und Uhrzeit) im Verzeichnis "history" angelegt, welches man auch jederzeit über die "Site Settings" am Button "History" importieren kann.

Die Kopie am Server ist also nur als zusätzliche Sicherung gedacht.

Löscht man diese zusätzliche (entfernte) Sicherung, dann sollte man in jedem Fall auch regelmäßig das Verzeichnis der lokalen Publizierung am Rechner nochmals auf ein externes Laufwerk sichern. Damit man eben bei Verlust des Rechners auch eine Sicherung seiner Projekte hat.

Mobirise speichert alles in dieser Datei, also auch Skripte, die man vielleicht selbst über den "Code Editor" in Mobirise einbaut, sonst wäre eine Wiederherstellung ja nicht möglich und eventuell aufwändige PHP-Skripte müssten dann immer wieder neu eingebaut werden.

Solch ein Skript, wie das Skript "mailscript.php" vom Werner, wird ja aber nicht über diesen "Code Editor" von Mobirise eingebaut sondern über die Formular-Aktion aufgerufen und Mobirise weiß davon also auch nichts und hat diesen Inhalt deswegen auch nicht in der Projekt-Datei gespeichert.

Öffne einfach mal Deine Projekt-Datei "project.mobirise" mit einem Editor und gucke Dir den Inhalt an. Aber Vorsicht, bitte zuvor sichern und/oder nicht speichern.



Hier mal als Beispiel der Inhalt einer ganz kleinen Projekt-Datei von dieser einfachen Seite:

https://www.mobirise-tutorials.com/Silvester/

Man könnte diese Datei einfach im Browser aufrufen und downloaden und dann den Inhalt lesen. Da steht z.B. auch mein FTP-Zugang (allerdings nicht das Passwort), den ich unten im Code geändert habe:

Code: Alles auswählen

{
  "settings": {
    "name": "Silvester",
    "currentPage": "index.html",
    "theme": {
      "name": "mobirise4",
      "title": "Mobirise 4",
      "styling": {
        "primaryColor": "#149dcc",
        "secondaryColor": "#ff3366",
        "successColor": "#F7ED4A",
        "infoColor": "#82786E",
        "warningColor": "#879A9F",
        "dangerColor": "#B1A374",
        "mainFont": "Rubik",
        "display1Font": "Rubik",
        "display1Size": 4.25,
        "display2Font": "Rubik",
        "display2Size": 3,
        "display5Font": "Rubik",
        "display5Size": 1.5,
        "display7Font": "Rubik",
        "display7Size": 1,
        "display4Font": "Rubik",
        "display4Size": 1,
        "isRoundedButtons": true,
        "isAnimatedOnScroll": false,
        "isScrollToTopButton": false
      }
    },
    "path": "@PROJECT_PATH@",
    "versionFirst": "4.8.10",
    "siteFonts": [
      {
        "css": "'Rubik', sans-serif",
        "name": "Rubik",
        "url": "https://fonts.googleapis.com/css?family=Rubik:300,300i,400,400i,500,500i,700,700i,900,900i"
      }
    ],
    "uniqCompNum": 1,
    "versionPublish": "5.3.10",
    "screenshot": "screenshot.png",
    "favicon": "@PROJECT_PATH@/assets/images/logo-mobirise-250x250-128x128.png",
    "noImageResize": "",
    "cookiesAlert": false,
    "gdpr": false,
    "publishType": "ftp",
    "publishPath": "file:///C:/Users/User/Documents/Mobirise/Silvester",
    "ftpLocation": "sftp://p1234567@home1234567.1and1-data.host:22",
    "publishFtpPath": "/Mobirise-Tutorials/Silvester/",
    "": "on",
    "cssOptimize": false,
    "lazyLoad": false,
    "robotsSwitcher": false,
    "sitemapSwitcher": false,
    "sitemapSwitcherAuto": false,
    "siteUrl": "undefined",
    "imageResize": true,
    "site_lang": "de",
    "publishChangesOnly": true
  },
  "pages": {
    "index.html": {
      "settings": {
        "main": true,
        "title": "Silvestergruss",
        "meta_descr": "Silvester, Gruss zum neuen Jahr",
        "header_custom": "",
        "footer_custom": "",
        "html_before": ""
      },
      "components": [
        {
          "_styles": {
            "& when not (@fullScreen)": {
              "padding-top": "(@paddingTop * 15px)",
              "padding-bottom": "(@paddingBottom * 15px)"
            },
            "& when (@bg-type = 'color')": {
              "background-color": "@bg-value"
            },
            "& when (@bg-type = 'image')": {
              "background-image": "url(@bg-value)"
            },
            ".mbr-media span": {
              "font-size": "48px",
              "cursor": "pointer",
              "background-color": "#ffffff",
              "border-radius": "50%",
              "width": "6rem",
              "height": "6rem",
              "line-height": "6rem",
              "position": "relative",
              "display": "inline-block",
              "transition": "all 0.25s",
              "color": "#353535",
              "&.mbri-play:before": {
                "position": "absolute",
                "left": "50%",
                "-webkit-transform": "translateX(-35%)",
                "-moz-transform": "translateX(-35%)",
                "-ms-transform": "translateX(-35%)",
                "-o-transform": "translateX(-35%)",
                "transform": "translateX(-35%)"
              }
            },
            ".modalWindow": {
              "position": "fixed",
              "z-index": "5000",
              "left": "0",
              "top": "0",
              "background-color": "rgba(61, 61, 61, 0.65)",
              "width": "100%",
              "height": "100%",
              ".modalWindow-container": {
                "display": "table-cell",
                "vertical-align": "middle"
              },
              ".modalWindow-video": {
                "height": "calc(80vw / 1.778)",
                "width": "80vw",
                "margin": "0 auto"
              }
            },
            "a.close": {
              "position": "absolute",
              "right": "4vw",
              "top": "4vh",
              "color": "#ffffff",
              "z-index": "5000000",
              "font-size": "37px",
              "background": "#000",
              "padding": "20px",
              "border-radius": "50%",
              "&:hover": {
                "color": "#ffffff"
              }
            }
          },
          "_name": "header8",
          "_customHTML": "<section class=\"header8\" group=\"Headers\" data-bg-video=\"{{bg.type == 'video' && bg.value.url}}\" plugins=\"PlayerVimeo\" mbr-class=\"{'mbr-fullscreen': fullScreen,\n                    'mbr-parallax-background': bg.parallax}\">\n\n    <mbr-parameters>\n    <!-- Block parameters controls (Blue \"Gear\" panel) -->\n        <input type=\"checkbox\" title=\"Full-Screen\" name=\"fullScreen\" checked>\n        <input type=\"range\" inline title=\"Oben\" name=\"paddingTop\" min=\"0\" max=\"8\" step=\"1\" value=\"6\" condition=\"fullScreen == false\">\n        <input type=\"range\" inline title=\"Unten\" name=\"paddingBottom\" min=\"0\" max=\"8\" step=\"1\" value=\"6\" condition=\"fullScreen == false\">\n\n        <input type=\"checkbox\" title=\"Titel Anzeigen\" name=\"showTitle\" checked>\n        <input type=\"checkbox\" title=\"Text Anzeigen\" name=\"showText\" checked>\n        <input type=\"checkbox\" title=\"Video-Popup Anzeigen\" name=\"showVideoPopUp\" checked>\n        <input type=\"text\" title=\"Modales Video\" name=\"modalVideo\" value=\"https://www.youtube.com/watch?v=rN75ganPGKA\" condition=\"showVideoPopUp\">\n        <input type=\"checkbox\" title=\"Beschreibung Anzeigen\" name=\"showDescription\" checked condition=\"showVideoPopUp\">\n        <input type=\"checkbox\" title=\"Buttons Anzeigen\" name=\"showButtons\" checked>\n\n        <fieldset type=\"background\" name=\"bg\" parallax>\n            <input type=\"image\" value=\"@PROJECT_PATH@/assets/images/mbr-4-1920x1280.jpg\" title=\"Hintergrundbild\" selected parallax>\n            <input type=\"color\" value=\"#510938\" title=\"Hintergrundfarbe\">\n            <input type=\"video\" value=\"http://www.youtube.com/watch?v=uNCr7NdOJgw\" title=\"Hintergrundvideo\">\n        </fieldset>\n        <input type=\"checkbox\" title=\"Overlay\" name=\"overlay\" checked condition=\"bg.type !== 'color'\">\n        <input type=\"color\" title=\"Overlay-Farbe\" name=\"overlayColor\" value=\"#000000\" condition=\"overlay && bg.type !== 'color'\">\n        <input type=\"range\" inline title=\"Transparenz\" name=\"overlayOpacity\" min=\"0\" max=\"1\" step=\"0.1\" value=\"0.5\" condition=\"overlay && bg.type !== 'color'\">\n    <!-- End block parameters -->\n    </mbr-parameters>\n\n    <div class=\"mbr-overlay\" mbr-if=\"overlay && bg.type!== 'color'\" mbr-style=\"{'opacity': overlayOpacity, 'background-color': overlayColor}\">\n    </div>\n\n    <div class=\"container align-center\">\n        <div class=\"row justify-content-md-center\">\n            <div class=\"mbr-white col-md-10\">\n                <h1 class=\"mbr-section-title align-center py-2 mbr-bold mbr-fonts-style\" mbr-theme-style=\"display-1\" mbr-if=\"showTitle\">\n                        Guten Rutsch</h1>\n                <p class=\"mbr-text align-center py-2 mbr-fonts-style\" mbr-theme-style=\"display-5\" mbr-if=\"showText\">\n                        Bleibt gesund und habt ein erfolgreiches Jahr 2022</p>\n                <div class=\"mbr-media show-modal align-center py-2\" mbr-if=\"showVideoPopUp\" data-modal=\".modalWindow\">\n                         <span mbr-icon class=\"mbri-play mbr-iconfont\"></span>\n                </div>\n                <div mbr-text class=\"icon-description align-center font-italic pb-3 mbr-fonts-style\" mbr-theme-style=\"display-7\" mbr-if=\"showDescription && showVideoPopUp\" data-app-selector=\".icon-description\">\n                        Video</div>\n                <div class=\"mbr-section-btn text-center\" mbr-buttons mbr-theme-style=\"display-4\" mbr-if=\"showButtons\" data-toolbar=\"-mbrBtnMove\"><a class=\"btn btn-md btn-white-outline\" href=\"http://www.mobirise-tutorials.com/\" data-app-placeholder=\"Type Text\" target=\"_blank\">Mobirise Tutorials</a></div>\n            </div>\n        </div>\n    </div>\n    <div mbr-if=\"showVideoPopUp\">\n        <div class=\"modalWindow\" style=\"display: none;\">\n            <div class=\"modalWindow-container\">\n                <div class=\"modalWindow-video-container\">\n                    <div class=\"modalWindow-video\">\n                        <iframe width=\"100%\" height=\"100%\" data-src=\"{{modalVideo}}\" frameborder=\"0\" allowfullscreen=\"1\"></iframe>\n                    </div>\n                    <a class=\"close\" role=\"button\" data-dismiss=\"modal\">\n                        <span aria-hidden=\"true\" class=\"mbri-close mbr-iconfont closeModal\"></span>\n                        <span class=\"sr-only\">Schließen</span>\n                    </a>\n                </div>\n            </div>\n        </div>\n    </div>\n</section>",
          "_cid": "rdMOABsHTX",
          "_anchor": "header8-0",
          "_protectedParams": [],
          "_global": false,
          "_once": false,
          "_params": {}
        }
      ]
    }
  }
}
Das ist auch einer der wichtigen Gründe, warum ein Mobirise-Projekt nicht zu viele Seiten haben sollte (möglichst nicht viel mehr als vielleicht 50), denn sonst wird diese Datei "project.mobirise" riesig groß und es kann zu Fehlern und Abstürzen kommen.

Bei meinem größten Projekt, mit ca. 70 Seiten, hat diese Projekt-Datei dann schon eine Dateigröße von ca. 1.5 Megabyte.
Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 11 Gäste