08. december 2006 - 20:34Der er
14 kommentarer og 1 løsning
En simpel Reg.Exp som skal fjerne skidt fra emailformular
Jeg skal bare have fjernet alle muligheder for at lave SQL injections og det synes jeg burde gøres med Reg.Exp, da jeg ikke har helt styr på det ville jeg gerne bede om at få det lavet herinde.
Nu hvor jeg tænker over det, er der så overhovedet behov for at tjekke en tekst igennem når det alligevel skal sendes som en mail? Ved ikke lige hvorfor jeg nævnte det med SQL injections når det ikke har spor med min problemstilling at gøre. Sry guys...
1) Inddata som email-adresse, emne, etc, der indtastes i en <input type="textbox"> skal tjekkes for at være på een linie, hvis de skal bruges i en emails standard header. Ellers kan en hacker sætte et linieskift på, og så bestemmer han over indholdet af headeren. Fx. kan han sætte en Cc: på
2) Kroppen bør ikke ligne en MIME-krop - måske er det ligegyldigt, hvis du har styr på 1), men for en sikkerheds skyld. Jeg har ikke selv brugt dette, så jeg kan ikke lige sige dig hvordan du nemmest gør det.
En ting som jeg synes er utrolig svært er at fjerne special tegn uden at det skal genere brugeren så han/hun ikke kan bruge almindelige tegn. Altså to bindestreger (--) kan jo bruges til at afslutte en query, er det relevant i denne sammenhæng? Har aldrig læst om emnet hvilket giver stof til eftertanke i mit hovede. Jeg vil fx ikke fjerne brug af anførselstegn osv da det i visse tilfælde bruges i en mail, enda ret ofte. Så hvad vil du foreslå at jeg gør?
Udover det, vil jeg lige høre hvordan man kan sørge for at alt input er på én linie?
NB. er allerede igang med at læse om email-injections! :-)
Hvad var det nu jeg gjorde ved 1) ? Jo, jeg fjernede linieskift fra de felter, og får regelmæssigt sjove mails. Seneste i papirkurven så ud i retning af (lidt rettet for at beskytte de skyldige)
Subject: ountry am is uncooked, cured, dried, smoked or unsmoked bcc: anxxxxxxxna@bluexxxxxxxxxw.com
Var den smuttet igennem, havde de sendt en mail via min mailformular, til en mig ubekendt person. Egentlig var det bare mig, der skulle have den.
Dog, blev jeg lige interesseret og ville lige høre om nl2br og htmlentities kan løse mit "problem"?
Jeg vil lige tilføje at brugere ikke selv kan tilføje en header, de kan vælge imellem 5 sætninger i en rullemenu som indeholder 5 "lovlige" sætninger. Når de vælger en af dem så kommer den i headeren der ser således ud: Kontaktform - $det_man_valgte
Så det burde betyde at jeg ikke skal bekymre mig om mail injections, eller?
Det er i selve beskeden/mail-inholdet jeg spørger om hjælp til beskyttelse - tror jeg :-)
Det eneste mine brugere har adgang til er at skrive selve beskeden. Men jeg har lige fundet på en lidt bedre måde at gøre det hele på. Jeg tilføjer min mail via GDlib også kan de selv gøre resten via outlook.
Ideen med det hele var at de skulle kunne bestille noget, men det har jeg valgt at gøre på en hel anderledes og sikker måde.
Mig bekendt er du ikke den store point samler, men jeg er da villig til at gøre et forsøg på at give dig nogle alligevel :-)
Hvis de 5 sætninger står i HTML-koden, kan enhver hacker jo skifte dem ud med noget andet, med linieskift. Dur ikke. Du må aldrig stole på noget, der kommer fra en bruger. Nej nl2br og htmlentities er kun til at vise ting på en HTML-side - kan ikke bruges her.
Jep, det er præcis samme måde jeg har gjort det på. Lige en sidste ting, der er intet galt i at skrive sin mail som en fuld sætning på sin hjemmeside, vel?
Altså istedet for at skulle skrive admin (a) site dot dk kan man så ikke bare skrive admin@site.dk
Jo, det er sikkert også galt. Igen er det meget nemt at skrive et regulært udtryk, som finder mulige emails. Om email-robotterne gør det, vides ikke, men de kan jo komme til det. En smule bedre admin<b>@</b>minside.her
Jamen så siger jeg tak. Ærgeligt for mig at du ikke tager imod point.
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.