Avatar billede qqq Nybegynder
11. juli 2004 - 14:48 Der er 6 kommentarer og
1 løsning

Sikre sin form

Jeg har en side med en form, som submitter til en anden side (action="recieve.asp"). Som det er nu, kan folk bare kopiere html'en til formen, for selv at lave en side med deres version af formen. De kan dermed ændre i de value's der overføres, hvilket resulterer i at vedkommende derved kan få forkert data lagt i min database.

Hvordan forhindre jeg dette bedst og lettest muligt? Kan man lave det så submitten af formen kun bliver behandlet, hvis det kommer fra en form fra ens egen side/domæne.

Hvad anbefaler i? Gerne med eksempler.
Avatar billede skwat Praktikant
11. juli 2004 - 14:54 #1
Du bliver nød til at validere dig input på recieve.asp, det nytter ikke noget at teste på hvor det kommer fra, for i sidste ende kommer det altid fra clienten.
Avatar billede skwat Praktikant
11. juli 2004 - 14:55 #2
Det giver desvære typisk lidt mange database opslag
Avatar billede eagleeye Praktikant
11. juli 2004 - 15:44 #3
Du kan evt. prøve at bruge denne til at tjekke hvor der submittes fra, og er det ikke dit domæne kan du lade være med at gemme data:

Request.ServerVariables("HTTP_REFERER")
Avatar billede vbcoder Nybegynder
11. juli 2004 - 17:01 #4
tja

hvis du skal poste til en database ville det nok være klogest at at validere brugeren i en database

et eksempel på ovenstående kunne være at du i toppen af din i toppen af din recieve.asp som eagleeye foreslår kigger på http_referer

  if request.servervariables("http_referer")="http://www.ditdomain.tld/dinform.asp" then
    'gem dine data
  else
    'postet fra andet site
    'gem evt i en log
    'indholdet af http_referer samt indholdet af formen
    'og andre oplysninger

  end if
Avatar billede skwat Praktikant
11. juli 2004 - 18:00 #5
Og den kan ikke omgåes?
Avatar billede vbcoder Nybegynder
11. juli 2004 - 19:13 #6
hvis det er et issue om den kan omgås så skal du istedet lave et system hvor brugeren valideres mod et login førend denne får lov at poste til databasen
Avatar billede vbcoder Nybegynder
11. juli 2004 - 19:18 #7
selvfølgelig kan den omgås - det er jo kun at sende et post til din side og spoofe data i post'en.

men du kan gøre det at du i global.asa under session_onstart lægger en variabel som som initialiseres til nul når sessionen starter.

når dinform.asp loades sættes den variabel til noget anden fx. sessionid

hvis du så checker på den når din recieve.asp loader vil den ikke kunne omgås

eks.

i global.asa

  sub session_onstart

    session("post") = 0

  end sub

i dinform.asp

  session("post") = session.sessionid

i recieve.asp

  if session("post") <> 0 then
    'gem dine data
  else
    'postet fra andet site
    'gem evt i en log
    'indholdet af http_referer samt indholdet af formen
    'og andre oplysninger

  end if
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester