Ergebnis 1 bis 9 von 9

Thema: [PHP] In PHP-Datei E-Mail-Adresse speichern und je nach GET-Parameter versenden

  1. #1
    Mitglied Avatar von HanZ
    Registriert seit
    Jul 2013
    Beiträge
    630

    [PHP] In PHP-Datei E-Mail-Adresse speichern und je nach GET-Parameter versenden

    Hallo,

    ich bin mit PHP nicht 100% konform, daher habe ich eine Frage. Ich habe eine Webseite mit einem Kontaktformular. Dieses Kontaktformular soll je nach GET-Parameter an unterschiedliche E-Mails versendet werden. Da ich nicht möchte, dass man diese E-Mails öffentlich sieht, dachte ich an folgendes Konzept:

    URL-Aufruf:
    xyz.de/contact.php?mail=12345

    In der contact.php sind jetzt einmal die E-Mail-Adressen hinterlegt. Je nach value von mail wird eine andere E-Mail genommen und als Empfänger genommen.
    Bei Python hätte ich jetzt einfach ein Dictionary genommen (Achtung, hier steht jetzt PHP/Python Mischmasch)

    Code (Python):
    1. mails = {'12345' : 'test@bla.de', '56789' : 'another@email.de'}
    und dann
    Code:
    mail_empfaenger = mails[$_GET['mail']]
    Dann hätte mail_empfaenger den wert test@bla.de ohne die E-Mail zu veröffentlichen.

    Ist das generell unproblematisch, die E-Mails in der contact.php-Datei zu speichern? Oder gibt es hier andere Lösungen?

    Ist die Idee mit dem Dictionary überhaupt in PHP umsetzbar? Andere Möglichkeiten? Die gesamte Idee scheiße? Direkt in die contact.php oder ne eigene PHP "mails.php"? Dann bei contact.php irgendwie Include? Und bei mails.php dann irgendwie Zugriff verweigern?

    LG
    HanZ

  2. #2
    N.A.C.J.A.C. Avatar von alter_Bekannter
    Registriert seit
    Jul 2013
    Ort
    Midgard
    Beiträge
    4.524

    Re: [PHP] In PHP-Datei E-Mail-Adresse speichern und je nach GET-Parameter versenden

    Das geht, aber einen numerischen Index sollte man eher so definieren:
    Code (PHP):
    1. $mails[0] = "0e@ma.il";
    2. $mails[1] = "1e@ma.il";
    3. ...
    folgendes geht auch:
    Code (PHP):
    1. $mails["null"] = "0e@ma.il";
    2. $mails["eins"] = "1e@ma.il";
    3. ...
    Gibt halt keine strikte Typisierung. ist und bleibt eine zweischneidige Angelegenheit.

    Das sollte auch gleich so funktionieren wie ich deinen Post verstehe. Also von der Abruftechnik her.
    Geändert von alter_Bekannter (13.08.19 um 14:40 Uhr)
    Wichtig: Warum die Installation von Win XP ein Linuxproblem ist.

    Autos töten keine Menschen, sie beschützen sie, vor Menschen mit kleineren Autos.

  3. #3
    Suchtspielmacher (ehm.) Avatar von werner
    Registriert seit
    Jul 2014
    Ort
    Mannheim
    Beiträge
    668

    Re: [PHP] In PHP-Datei E-Mail-Adresse speichern und je nach GET-Parameter versenden

    Also wenns nur ein mini-Projekt ist würde ich ein Switch-case schreiben, und da den Formularwert durchswitchen mit default value für ungültige Eingaben, etc.

    Aber ja, du kannst auch zb ein json File erstellen, dort alle E-Mails abspeichern, das mit php jedesmal auslesen und ähnlich wie ein dictonary nutzen. Oder eben das Array direkt der PHP File definieren.

    Eingabe cleanen wäre vermutlich auch gut, kommt eben darauf an, was erlaubt ist im Kontaktfeld.
    Für diesen Beitrag bedankt sich alter_Bekannter

  4. #4
    N.A.C.J.A.C. Avatar von alter_Bekannter
    Registriert seit
    Jul 2013
    Ort
    Midgard
    Beiträge
    4.524

    Re: [PHP] In PHP-Datei E-Mail-Adresse speichern und je nach GET-Parameter versenden

    Das wäre vermutlich die sauberste Lösung, zumindest aus Sicht "Prüfung der Usereingaben". Meine erste Antwort entspricht eher der nächsten Übersetzung.
    Wichtig: Warum die Installation von Win XP ein Linuxproblem ist.

    Autos töten keine Menschen, sie beschützen sie, vor Menschen mit kleineren Autos.

  5. #5
    Mitglied

    (Threadstarter)

    Avatar von HanZ
    Registriert seit
    Jul 2013
    Beiträge
    630

    Re: [PHP] In PHP-Datei E-Mail-Adresse speichern und je nach GET-Parameter versenden

    @alter_Bekannter: Danke, das zweite sieht ja genau nach dictionary-Syntax aus oder?

    @werner:
    ein json File erstellen, dort alle E-Mails abspeichern
    Das wäre ja dann aber, sofern URL bekannt, wieder öffentlich zugänglich, oder?

    Eingabe cleanen wäre vermutlich auch gut,
    Was genau meinst du damit?

  6. #6
    N.A.C.J.A.C. Avatar von alter_Bekannter
    Registriert seit
    Jul 2013
    Ort
    Midgard
    Beiträge
    4.524

    Re: [PHP] In PHP-Datei E-Mail-Adresse speichern und je nach GET-Parameter versenden

    Korrekt, nennt sich bei PHP assoziatives Array. Etwas das einem Dictionary näher kommt wirst du bei PHP nicht finden.
    Wichtig: Warum die Installation von Win XP ein Linuxproblem ist.

    Autos töten keine Menschen, sie beschützen sie, vor Menschen mit kleineren Autos.

  7. #7
    runs on biochips Avatar von Shodan
    Registriert seit
    Jul 2013
    Ort
    Citadel Station
    Beiträge
    579
    ngb:news Artikel
    2

    Re: [PHP] In PHP-Datei E-Mail-Adresse speichern und je nach GET-Parameter versenden

    Kürzere Array Syntax (mit => und Kommas )
    Code (PHP):
    1. $mails = [
    2.     'support' => 'lvl1support@service.domain',
    3.     'techguy' => 'lvl2support@service.domain',
    4.     'business' => 'sales@service.domain',
    5. ];
    6.  
    7. if (isset($mails[$_GET['mail']]) {
    8.     $receiver = $mails[$_GET['mail']];
    9. } else {
    10.     // client sent an unknown value. Could be a bug or an attack
    Einfache Anführungszeichen: " und ' unterscheiden sich und wenn du " nicht brauchst, dann nimm '

    Zitat Zitat von werner Beitrag anzeigen
    du kannst auch zb ein json File erstellen, dort alle E-Mails abspeichern, das mit php jedesmal auslesen
    Trennung Konfiguration und Code finde ich toll.
    Konfig in JSON ist aber nur sinnvoll, wenn man sie woanders auch verwendet, z.B. mit einer GUI editiert.

    Aber in einem kleinen PHP Projekt?

    config/mail.php
    Code (PHP):
    1. <?php return [
    2.     'receivers' => [
    3.         'support' => 'lvl1support@service.domain',
    4.         'technik' => 'lvl1support@service.domain',
    5.         'business' => 'sales@service.domain',
    6.     ],
    7.     'otherStuff' => [ ]
    8. ];
    logic.php
    Code (PHP):
    1. <?php
    2. $config = require 'config/mail.php';
    3.  
    4. $input = $_GET['mail'];
    5.  
    6. if (isset($config['receivers'][$input]) {
    Ja das requiren wird hässlich, wenn Projekte größer werden, aber wenn Projekte größer werden wirft man auch mehr Boilerplate drauf ;-)

    Zitat Zitat von HanZ Beitrag anzeigen
    Was genau meinst du [mit Eingaben cleanen]?
    Validate on Input, Escape on Output.

    Validation z.B. durch Abgleich einer Liste der erlaubten Werten, siehe else Zweig im Code oben.

    Kontextsensitives Escaping bedeutet den String umzuschreiben, damit Steuerzeichen des Kontextes, in den er gerendert wird, auf dessen Art "escaped" sind und daher nicht als Code interpretiert werden, wenn später der Interpreter jenes Kontextes (z.B. ein Browser oder ein E-Mail-Client oder eine Datenbanke) diese verarbeitet.

    Einige Leute "Sanitizen" dazwischen noch, d.h. sie streichen alles aus dem String, was ihnen nicht gefällt und behalten nur den Rest als Eingabewert (der immer noch kontextsensitiv escaped werden muss, da man beim Sanitizen den Kontext nicht kennt).

    Beispiel: Meine Input enthält HTML-Tags: <span color=green>Das NGB streicht mir den Tag nicht weg, dein Browser wertet es aber auch nicht aus, der Text wurde escaped</span>
    Für diesen Beitrag bedanken sich werner, HanZ
    Art. 6 der Richtlinie 2006/24 ist mit den Art. 7 und 52 Abs. 1 der Charta der Grundrechte der Europäischen Union unvereinbar, soweit er den Mitgliedstaaten vorschreibt, sicherzustellen, dass die in ihrem Art. 5 genannten Daten für die Dauer von bis zu zwei Jahren auf Vorrat gespeichert werden.
    Generalanwalt Pedro Cruz Villalón - Europäischer Gerichtshof

  8. #8
    Mitglied

    (Threadstarter)

    Avatar von HanZ
    Registriert seit
    Jul 2013
    Beiträge
    630

    Re: [PHP] In PHP-Datei E-Mail-Adresse speichern und je nach GET-Parameter versenden

    Danke, das grobe Gerüst steht und funktioniert soweit. Morgen gehts erstmal in Urlaub, danach guck ich mir das nochmal genauer an mit dem cleanen.

  9. #9

    Re: [PHP] In PHP-Datei E-Mail-Adresse speichern und je nach GET-Parameter versenden

    Man sollte NIE ein HTTP GET Request wichtige Daten wie Email und PWs uerbermitteln. GET wird mit der Antwort uebertragen und kann auch schnell trotz einfacher base64 oder md5 etc. Verschluesselung abgegriffen werden. Ich wuerde es als POST definieren. POST uebermittel nicht per Header sondern als inhalt der Message auf welche man schwirieger zugreifen kann. Erlaube allg. nur bestimmte HTTP request Parameter und erstelle nicht unabsichtlich einen HTTP proxy. Aber bitte die POST stark beschraenken und reglementieren. Sonst laden man dir so viel Schrott hoch.

    Absolut wichtig ist, das du die die php dateien entsprechend configurierst und davor schuetzt, dass unautoresierte user .php files mittels url testingen finden und manipulieren koennen. Du solltest auch die cookies filtern und jede input moeglichkeit fuer user mit entsprechender filtern ausrueusten und festhalten, dass keine .php dateien oder andere heraufgeladen werden koennen und mit unvorsichtig gestallteten Rechten auf deinem Server ausgefuehrt werden koennen.

    und bitte... hide und filtere deine urls vor bestimmten Eingaben und .dateien wie urlpaths mit .php?iwasCMD=<angriff> vor injection Angriffen. Das ist einfach so der klassiker, den man wirklich vermeiden kann und der wird mal schnell trollige Eigenschaften in kurzer Zeit annehmen.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •