28. august 2022 - 15:31Der er
8 kommentarer og 1 løsning
Opret formular og gem den i mailen
Jeg har oprettet en kontaktformular på min hjemmeside i HTML. Jeg kunne godt tænke mig, at hver gang nogle udfylder og sender formularen gemmes den i min mail. Håber der er nogle der kan fører mig på vej til en løsning. Jeg skal nok bruge noget PHP. Jeg vil gerne undgå at skulle bruge WordPress eller lignende.
Jeg ved ikke om det kan lade sig gøre, men jeg havde bare tænkt mig, at lade de sendte oplysninger tilgå en mail. Jeg har ikke behov for, at gemme oplysningerne i en database. Jeg forventer at få mellem 0-5 henvendelser om dagen, nok nærmere 1-2 end 4-5. Så at jeg har oplysningerne i min mail er nok for mig.
I koden, hvor du sender mail, så tilføj lige en mail til dig selv (lad være med at skrive din mail-adresse i klar tekst i koden) før rutinen afsluttes. Alternativt kan du sende til dig selv via BCC (bare en linjes kode ekstra, så får du en komplet kopi af mail.
0) Afsendelse af mails fra en formular på en hjemmeside er fyldt med farer, og åbner din server til angreb - hvis det ikke bliver gjort korrekt !! Det kan virke uoverkommeligt, men det er ikke umuligt, selv for en som er ved at lære Web-udvikling. Faktisk alle af de nedenstående punkter, har jeg selv mere eller mindre lært "på den hårde måde". Ik' fedt! :)
1) (som claes57 skriver) så brug BCC ( i stedet for TO: ) og tilføj dig selv som modtager. På den måde kan du også se om din "kontaktformular" bliver misbrugt. BCC = Blind Carbon Copy = Modtagere kan ikke se de andre som også modtager mailen, kun deres eget navn/email fremgår. Du sikrer dermed at ingen kan få andres email-adresse oplyst, mens du kan sende 1 email til flere modtagere.
2) Rens formularens værdier !!! Sørg for at du ikke arbejder med andet end tekst. F.eks. kun a-z, æ ø å, tal og nogle få tegn, men ikke linjeskift eller : Google "Email Injection" for mere info. Injection er når en bruger/hacker f.eks. indsætter tegn i en formular, som efterfølgende bliver ukritisk behandlet af PHP, og kan derfor lede til "afvikling af utilsigtet kode" = Du/din server kan blive hacket! Derfor skal man ALTID rense bruger-input FØR resten af koden går videre med behandling af bruger-input. Den nemmeste måde at rense bruger-input på, er at fjerne de "ulovlige" tegn i de stringe, som indeholder data fra din formular. Google "php user input sanitization".
3) Sørg for at input til PHP kommer fra din formular - ikke hvem som helst på Internettet !! Dette kan f.eks. gøres med en såkaldt "CSRF token", hvor din server laver en unik "nøgle" til Kontaktformularen, som kun kan bruges 1 gange i kort tid. På denne måde kan man ikke sende flere mails afsted, ved at sende form-data direkte til dit PHP-script. Eller.. Man kan godt, men når en token bliver gjort ugyldig efter første POST, vil efterfølgende POSTs med samme token blive afvist.
4) Brug en CAPTCHA funktion, og sørg for at bruger af kontaktformen ER menneske. Det er nemt at sætte en BOT op til at indsætte tekst i din formular og klikke SEND ! Ellers får du alle mulige "tilbud" på medicin, dating-muligheder, penge-investeringer, og andet som ikke kan nævnes på dette forum.
5) Brug f.eks. en SMTP-server til at sende mails. Så ser dine mails "officielle" ud og indeholder ikke data om din (PHP)server. PHPMailer kan hjælpe dig med sikker opsætning af dine mails, men er en smugle avanceret. Der er til gengæld mange Tutorials på Nettet.
Jeg er næsten blevet helt bange for at bruge mails til at gemme mine oplysninger på. Jeg tænkte bare, at det var en metode, at gemme mine henvendelser på, og sikre at de ikke blev over skrevet. Jeg ved ikke om det er korrekt, at fortsætte med, at skrive i et spørgsmål, der er besvaret. Jeg fortsætter i spørgsmålet: Gem indkomne kontaktformular uden database.
Det var på ingen måde for at skræmme dig!! Det var ment som en liste af erfaringer, og hvad man kan gøre, når der sker misbrug. F.eks. WordPress har en lang række funktionere til at "filtrere" bruger-input, og det er lidt det man selv er nød til at kode, for at undgå misbrug. https://developer.wordpress.org/themes/theme-security/data-sanitization-escaping/
Vigtigst er det dog altid at forholde dig kritisk til bruger-input, og at sikre input ikke kan blive brugt til at omgå din kode. Derfor start med at rense input - fjern & % : ; og linjeskift (#0A og #0D). Med disse 6 tegn er det mulighed for bryde strukturen, og injecte ekstra kode. Disse tegn er heller ikke vigtige i en "rigtig" besked, og hvis de mangler, forstår man stadigvæk sammenhæng. $renset_input = str_replace(["&", "%", ":", ";", "\n", "\r"], "", $input);
Du kunne også overveje at bruge f.eks. MailChimp's ContactForm med din egen opsætning, som du så kan "embedde" på din side (vha f.eks. en iframe). MailChimp har en gratis "Plan", hvor man faktisk kan lave mange ting - bla en Kontakt formular, som sender input return til den Inbox man har hos MailChimp. Man kan så få en "Notifikation", når der er nye beskeder i Inbox'en :) Så holder MailChimp styr på sikkerheden, og alle beskeder er helt flyttet fra din egen hjemmeside og email.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.