/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Problem med HTTP_REFERER
Fra : Mikkel Z. Herold \(M~


Dato : 29-06-03 11:53

Hej gruppe.

Jeg har lavet en form, som sender sine data til mig i en e-mail, når man
trykker "submit".

Formen ligger i én fil ("evaluation.html"), og scriptet der sender dataene i
en mail ligger i en anden fil ("save_evaluation.html").

For at undgå, at en "hacker" laver en million kald til
"save_evaluation.html", så jeg får en million tomme mails, har jeg indsat
følgende i starten af filen:



--
"And my sanity scans the horizon"
Sting - The Wild Wild Sea

http://www.mzh.dk



 
 
Mikkel Z. Herold \(M~ (29-06-2003)
Kommentar
Fra : Mikkel Z. Herold \(M~


Dato : 29-06-03 11:59

UPS! Den forbandede "Send"-knap! Her kommer indlægget lige igen - i fuld
længde!

Hej gruppe.

Jeg har lavet en form, som sender sine data til mig i en e-mail, når man
trykker "submit".

Formen ligger i én fil ("evaluation.html"), og scriptet der sender dataene i
en mail ligger i en anden fil ("save_evaluation.html").

For at undgå, at en "hacker" laver en million kald til
"save_evaluation.html", så jeg får en million tomme mails, har jeg indsat
følgende i starten af filen:

if (!isset($HTTP_REFERER) OR !ereg("evaluation.html$", $HTTP_REFERER)) {
header("Location: nodata.html");
die();
}

Altså, noget der tjekker, om siden er blevet kaldt fra formen.

Det virker fint når jeg tester det, men flere har klaget over, at de bliver
sendt til "nodata.html"-siden når de forsøger at sende formen.

Nogen der har en forklaring på det? Bliver $HTTP_REFERER ikke altid sendt
med, eller kan man forhindre det lokalt på sin maskine? Og i så fald, er der
så en anden løsning?

Mvh.

Mikkel

--
"And my sanity scans the horizon"
Sting - The Wild Wild Sea

http://www.mzh.dk

In news:3efec51b$0$15313$ba624c82@nntp03.dk.telia.net,
Mikkel Z. Herold (MZH) <mikkel@mzh.NOSPAMdk> typed:
> Hej gruppe.
>
> Jeg har lavet en form, som sender sine data til mig i en e-mail, når
> man trykker "submit".
>
> Formen ligger i én fil ("evaluation.html"), og scriptet der sender
> dataene i en mail ligger i en anden fil ("save_evaluation.html").
>
> For at undgå, at en "hacker" laver en million kald til
> "save_evaluation.html", så jeg får en million tomme mails, har jeg
> indsat følgende i starten af filen:



Johan Holst Nielsen (29-06-2003)
Kommentar
Fra : Johan Holst Nielsen


Dato : 29-06-03 12:03

Mikkel Z. Herold (MZH) wrote:
> if (!isset($HTTP_REFERER) OR !ereg("evaluation.html$", $HTTP_REFERER)) {
> header("Location: nodata.html");
> die();
> }
>
> Altså, noget der tjekker, om siden er blevet kaldt fra formen.
>
> Det virker fint når jeg tester det, men flere har klaget over, at de bliver
> sendt til "nodata.html"-siden når de forsøger at sende formen.
>
> Nogen der har en forklaring på det? Bliver $HTTP_REFERER ikke altid sendt
> med, eller kan man forhindre det lokalt på sin maskine? Og i så fald, er der
> så en anden løsning?

Nej... for det første kan $HTTP_REFERER blive manipuleret som man ønsker
det. Det er browseren der sætter den. Så en hacker kan reelt bare selv
sætte den og alligevel misbruge din form. Der er ingen pointe i at bruge
HTTP_REFERER... Sådan er det. Man kan formentlig også fjerne
HTTP_REFERER i flere browsere... således den slet ikke bliver smidt med
i headeren...

Desuden.. husk lige register_globals kan være OFF på visse servere så
derfor bør du altid bruge dem i deres global arrays... altså
$_SERVER['HTTP_REFERER'] :)

mvh
Johan


Johan Holst Nielsen (29-06-2003)
Kommentar
Fra : Johan Holst Nielsen


Dato : 29-06-03 11:59

Mikkel Z. Herold (MZH) wrote:
> Hej gruppe.

Hej :)

> Jeg har lavet en form, som sender sine data til mig i en e-mail, når man
> trykker "submit".

Okay...

> Formen ligger i én fil ("evaluation.html"), og scriptet der sender dataene i
> en mail ligger i en anden fil ("save_evaluation.html").

..html ? Hmmm..

> For at undgå, at en "hacker" laver en million kald til
> "save_evaluation.html", så jeg får en million tomme mails, har jeg indsat
> følgende i starten af filen:

Well, validering er jo en anden mulighed. Du kunne f.eks. lave en log
som logger den sidste times sendte mails... Hvis en host sender mere end
2-3 mails i timen så bliver de afvist ;)
Det kunne kombineres med at tjekke hvorvidt det er det samme der bliver
sendt og om der overhovedet er indsat noget i filen...

Desuden kan jeg ikke se hvad du har indsat i filen? Det er heelt tomt
her?! :D

mvh
Johan


Mikkel Z. Herold \(M~ (29-06-2003)
Kommentar
Fra : Mikkel Z. Herold \(M~


Dato : 29-06-03 14:01

>> Formen ligger i én fil ("evaluation.html"), og scriptet der sender
>> dataene i en mail ligger i en anden fil ("save_evaluation.html").
>
> .html ? Hmmm..

Ja, jeg har sat webstedet op, så den kører alle html-filer gennem
PHP-parseren. Derfor html-endelsen.

> Well, validering er jo en anden mulighed. Du kunne f.eks. lave en log
> som logger den sidste times sendte mails... Hvis en host sender mere
> end 2-3 mails i timen så bliver de afvist ;)
> Det kunne kombineres med at tjekke hvorvidt det er det samme der
> bliver sendt og om der overhovedet er indsat noget i filen...

Ja, det er da en mulighed, men efter min mening lidt overkill... Formen er
en standard-ting, som jeg før i tiden ville have brugt Formmail til, men med
PHP har jeg frihed til at styre udseende på mailen osv. selv.

Det forekommer mig, at dette må være en problemstilling som mange andre har
også. Der er vel ikke ret mange PHP-kodere der bruger Formmail når man har
mail()-funktionen, eller hva'?

Hvad gør "I andre" for at undgå at blive oversvømmet med tomme mails fra
formularer? Vil det være en idé at kigge på $_POST-arrayet og tjekke dets
indhold...?

Mvh.

Mikkel

--
"And my sanity scans the horizon"
Sting - The Wild Wild Sea

http://www.mzh.dk



Henrik Stidsen (29-06-2003)
Kommentar
Fra : Henrik Stidsen


Dato : 29-06-03 14:12

"Mikkel Z. Herold \(MZH\)" <mikkel@mzh.NOSPAMdk> wrote in
news:3efee2f0$0$15315$ba624c82@nntp03.dk.telia.net

> Hvad gør "I andre" for at undgå at blive oversvømmet med tomme
> mails fra formularer? Vil det være en idé at kigge på
> $_POST-arrayet og tjekke dets indhold...?

Checker at de felter der skal bruges er udfyldt, det er meget
simpelt.

--
..: Henrik Stidsen - http://hs235.dk/ - http://hs235.dk/blog/ ::...
"Is everyone else in the world a moron, or is it just me?"
(Dilbert Newsletter)

Søg
Reklame
Statistik
Spørgsmål : 177559
Tips : 31968
Nyheder : 719565
Indlæg : 6408935
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste