21. december 2006 - 12:31Der er
22 kommentarer og 1 løsning
Kontaktformular bliver udnyttet til spam
Jeg har et problem. Denne kontaktformular bliver udnyttet til spam. Jeg er klar over at jeg har visse alternativer til at stoppe dette, ved fx at lave sådan et tilfældigt genereret kode felt eller lignende, men det er jeg ikke interesseret i her og nu. Jeg er interesseret i hvorfor den kan blive udnyttet til spam.
Da jeg har brugt htmlentities() på alle felter, forstår jeg ikke de kan bruge den til spam. De får på en eller anden måde emailen sendt til flere personer ved at tilføje til $til, men hvordan i alverden? Hvis alle tags som < bliver lavet om til < Hvordan kan de så få eksekveret en kode og komme bag om?
Håber I forstår problemet, ellers spørg. På forhåndtak!
if (!preg_match("/[a-z]/", $var) || !preg_match("/[0-9]/", $var)) { //indeholder andet end bogstaver og tal }
fx..
du kan så ændre den, jeg ved ikke hvilke tegn du vil tillade, men mit eksempel vil fjerne muligheden med sikkerhed. Dog er den ikke helt brugervenlig da man ikke kan bruge bindestreger og underscores fx.. dem kan du bare tilføje foroven!
Det skal ikke erstattes med et bestemt tegn, og at angive et tegn for hvert specielt tegn er jo ikke ret smart. Desuden, hvorfor skulle det virke bedre end htmlentities()
Der skal være mulighed for at skrive beskeder indeholdende specielle tegn så som < > / " osv. Derfor duer forslaget umiddelbart ikke.
Nu forstår jeg ikke helt hvad du mener med at det ikke skal erstattes. Det er jo netop det som htmlentities gør.. Det erstatter det til en kode der ser således ud for < og > : < og >
if (!eregi("^[A-Z0-9,._%-!?@&/()=+#]$", $var)) { //indeholder snavs }
Duer ikke, da folk skal have lov til at bruge de tegn. Det skal erstattes er deres html, hvilket htmlentities() gør. Derfor ser jeg ingen forskel i htmlentities() og din metode. Det er bare mere bøvlet. Når det gør det samme, så kan det jo heller ikke stoppe spam-misbruget vel?
Problemet ligger på en side som jeg ikke uden videre kan tillade mig at ændre på. Desuden tager det jo noget tid før jeg kan sige om den gør eller ej.
Selv modtager jeg heller aldrig spam, men jeg benytter kun htmlentities()
Jeg kan ikke se fordelen i dit script. Kan du ikke forklare hvad den gør anderledes. Med seneste eksempel så skal man enten manuelt erstatte tegn, hvilket giver samme resultat, eller give en fejlmeddelelse, hvilket ikke duer da brugeren skal have lov til at skrive sådanne tegn.
well, din emailvalidator har vi jo ikke set! Og du er sikker på det er scriptet du bruger som du viser os? Altså det script som ligger på serveren er måske anderledes?
headers står jo for sig i mail(). Men kan man alligevel tilføje headers i selve teksten, hvor som helst? Hvis ja, så er det nok det, som jeg ikke har tænkt på Hvis ja, så smid svar... :)
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.