Enkelt exempel
rightplace = "http://www.sida.se/form.html";
if left (Request.serverVariables("HTTP_REFERER"), len (rightplace) ) = rightplace then
' Kod för att skicka formuläret...
else
Response.write("Fel, kunde inte skicka!");
endif
18 svar · 490 visningar · startad av Bosse168
Kan man på något sätt göra en koll som kollar att formulärets data kommer från rätt sida.
Alltså så man inte kan skapa ett eget likadant formulär och lägga det på en annan server och skicka in information den vägen.
Enkelt exempel
rightplace = "http://www.sida.se/form.html";
if left (Request.serverVariables("HTTP_REFERER"), len (rightplace) ) = rightplace then
' Kod för att skicka formuläret...
else
Response.write("Fel, kunde inte skicka!");
endif
Du kan ju kolla servervariabeln HTTP_REFERER. Men; det kommer inte alltid att stämma, eftersom vissa personliga brandväggar rensar referer-headern.
HEJ!
Jovisst går det att fixa!
request.servervariables("HTTP_HOST") ger "www.exempel.se"
Och om du har samma domän som flera, använd HTTP_REFERER istället, ger "www.exempel.se/folder/folder/fyll_i_form.asp".
En annan variant är att sidan som formuläret ligger på genererar en engångs-kod som skickas med ett hidden-fält och kollas när formuläret skickas.
J.N. skrev:
request.servervariables("HTTP_HOST") ger "www.exempel.se"
Men HTTP_HOST ger väl ända domännamnet på den sida som anropas och inte den sida man kommer från?
nitro2k01 skrev:
Men HTTP_HOST ger väl ända domännamnet på den sida som anropas och inte den sida man kommer från?
Das stimmt.
HEJ!
nitro2k01 skrev:
J.N. skrev:
request.servervariables("HTTP_HOST") ger "www.exempel.se"
Men HTTP_HOST ger väl ända domännamnet på den sida som anropas och inte den sida man kommer från?
Nä, det är rätt, tänkte fel.
Så vad är lösningen? :)
... och gör man så stoppar man effektivt alla som kör Nortons personliga brandvägg, till exempel.
Men det funkade ju inte bakom vissa brandväggar .
Ett annat alternativ är ju att du på någon annan sida (eller alla andra sidor) sätter en sessioncookie, som du sedan kollar av. Gör man en inloggning från en annan sida, så har man ju inte sessioncookien.
Men blir inte det "jobbigt" för servern för det är ganska många som använder det formuläret.
Finns det inga andra lösningar än HTTP_REFERER och sessions?
Du kan ju som sagt även använda en engångskod som alltså skickas med ett input type="hidden"-fält, och inte genom en cookie.
Förstår inte hur man får engångskoden att funka?
Pseudokod:
[u]Sidan som visar formuläret:[/u]
skapa slumpad kod
spara koden i databasen tillsammans med klockslaget
skriv ut slumpkoden i ett hiddenfält i formuläret
[u]Sidan som tar emot formuläret:[/u]
Läs av querystring efter kod
IF (koden finns ej OR koden = "")
felmeddelande()
ELSE
posta formuläret
ta bort koden ur databasen så att den inte kan användas igen
ENDIF
Hur den riktiga koden ska se ut vet jag inte riktigt, särskilt som jag intesysslar med asp för det mesta.
Det är ju inte några större problem att skapa ett hiddenfält på sidan som ligger på en annan server.