|
| Form-get fra andre sider Fra : Jens Rosenkvist |
Dato : 06-01-05 04:41 |
|
Jeg har lavet en form som indeholder:
<form method='post' ....
<input type='hidden' value='1' name='a'> ....
Siden man bliver sendt til skal ikke ses af alle og derfor laver jeg
dette tjek:
If isNumeric(Request.Form("1")) = true Then
'Vis tekst
Else
'Vis ikke tekst
End If
Spørgsmålet er så om andre kan lave en form og lægge den op på deres
egen side og sende dem videre til min side og derved "snyde" min side?
Sagt på en anden måde, kan man kun hente forms fra samme domæne?
| |
Jens Gyldenkærne Cla~ (06-01-2005)
| Kommentar Fra : Jens Gyldenkærne Cla~ |
Dato : 06-01-05 12:23 |
|
Jens Rosenkvist skrev:
> <input type='hidden' value='1' name='a'> ....
> If isNumeric(Request.Form("1")) = true Then
Det skal nok nærmere være
If isNumeric(Request.Form("a")) Then
(det er navnet der skal requestes, ikke værdien).
> Spørgsmålet er så om andre kan lave en form og lægge den op på deres
> egen side og sende dem videre til min side og derved "snyde" min side?
Ja, forudsat at de ved hvilke variable du skal modtage. Men det er
muligt at nogle browsere vil blokere for det. Du kan tjekke på
referer-variablen for at se hvor der postes fra - men derved risikerer
du også at blokere "gode" folk der bare har blokeret for referer i
browseren.
En anden mulighed er at bruge en kode der ikke umiddelbart kan aflures -
fx en hashværdi af brugerens ip-adresse eller af dags dato.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html
| |
Jens Rosenkvist (06-01-2005)
| Kommentar Fra : Jens Rosenkvist |
Dato : 06-01-05 16:33 |
|
Jens Gyldenkærne Clausen wrote:
> Det skal nok nærmere være
> If isNumeric(Request.Form("a")) Then
Tastede bare noget ind for eksemplets skyld. Tænkte ikke lige over det.
Det er skrevet korrekt på min side. ;)
> Ja, forudsat at de ved hvilke variable du skal modtage. Men det er
> muligt at nogle browsere vil blokere for det. Du kan tjekke på
> referer-variablen for at se hvor der postes fra - men derved risikerer
> du også at blokere "gode" folk der bare har blokeret for referer i
> browseren.
Hvordan får man fat i referer-variablen?
> En anden mulighed er at bruge en kode der ikke umiddelbart kan aflures -
> fx en hashværdi af brugerens ip-adresse eller af dags dato.
Hvad forhindrer brugeren i, at se en form et sted på siden og derefter
kopiere det over til andre knapper på siden.
Hvor mange knapper man ser, afhænger af hvem man er logget ind som.
Jeg kunne godt ændre det til, at der også blev undersøgt hvem man er
logget ind som på den side knappen fører til, men så skal jeg tjekke i
databasen og jeg ville hellere bare lave ovenstående tjek.
Men kun hvis det er sikkert.
| |
Casper Bang (06-01-2005)
| Kommentar Fra : Casper Bang |
Dato : 06-01-05 16:59 |
|
> Jeg kunne godt ændre det til, at der også blev undersøgt hvem man er
> logget ind som på den side knappen fører til, men så skal jeg tjekke i
> databasen og jeg ville hellere bare lave ovenstående tjek.
> Men kun hvis det er sikkert.
Hvis man vil snyde med forms, kan man snyde med forms.
Selv om de fleste "lovlige" browsere sender en refererværdi med som du kan
tjekke på, KAN dette omgås hvis man vil.
Den eneste sikre måde er at tjekke på HVER side, serverside.
Du kan eventuelt gemme deres login i en session.
| |
Jens Gyldenkærne Cla~ (06-01-2005)
| Kommentar Fra : Jens Gyldenkærne Cla~ |
Dato : 06-01-05 17:49 |
|
Jens Rosenkvist skrev:
> Hvordan får man fat i referer-variablen?
Request.ServerVariables("HTTP_REFERER")
> Hvad forhindrer brugeren i, at se en form et sted på siden og
> derefter kopiere det over til andre knapper på siden.
Intet - men hvis du genererer dynamiske værdier og hasher dem så
man ikke umiddelbart kan regne ud hvordan de genereres, kan
brugeren ikke lave en fast form der bryder ind hos dig.
> Jeg kunne godt ændre det til, at der også blev undersøgt hvem
> man er logget ind som på den side knappen fører til, men så
> skal jeg tjekke i databasen og jeg ville hellere bare lave
> ovenstående tjek.
Hvad med at tjekke en session-variabel?
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html
| |
Jens Rosenkvist (06-01-2005)
| Kommentar Fra : Jens Rosenkvist |
Dato : 06-01-05 23:37 |
|
Jens Gyldenkærne Clausen wrote:
> Intet - men hvis du genererer dynamiske værdier og hasher dem så
> man ikke umiddelbart kan regne ud hvordan de genereres, kan
> brugeren ikke lave en fast form der bryder ind hos dig.
Ok. Så er jeg med.
> Hvad med at tjekke en session-variabel?
Jeg bruger cookies til login.
Men det kan jeg ikke bruge direkte til denne side. Problemet er, at
brugere kun skal kunne se deres egne beskeder. Så jeg kan ikke nøjes med
kun at undersøge om brugerne er logget ind, da jeg også skal vide om de
er foratteren.
Vil det så være bedst at løse det ved at bruge en session eller kigge i
databasen?
| |
Casper Bang (07-01-2005)
| Kommentar Fra : Casper Bang |
Dato : 07-01-05 12:34 |
|
>> Hvad med at tjekke en session-variabel?
>
> Jeg bruger cookies til login.
Forhåbentligt er det ikke KUN brugernavnet du gemmer i en cookie; en cookie
kan nemt forfalskes.
> Men det kan jeg ikke bruge direkte til denne side. Problemet er, at
> brugere kun skal kunne se deres egne beskeder. Så jeg kan ikke nøjes med
> kun at undersøge om brugerne er logget ind, da jeg også skal vide om de er
> foratteren.
>
> Vil det så være bedst at løse det ved at bruge en session eller kigge i
> databasen?
Hvis du skal bruge de samme data mange gange, og de ikke ændrer sig, er en
session often det smarteste, og den løsning der bruger færrest ressourcer.
| |
Jens Rosenkvist (08-01-2005)
| Kommentar Fra : Jens Rosenkvist |
Dato : 08-01-05 19:48 |
|
Casper Bang wrote:
>>Jeg bruger cookies til login.
>
>
> Forhåbentligt er det ikke KUN brugernavnet du gemmer i en cookie; en cookie
> kan nemt forfalskes.
Jeg har aldrig overvejet, at de kunne forfalskes.
Jeg gemmer dog mere i dem end brugernavn, men det giver ikke vildt
større sikkerhed.
Hvad mener du så man ellers skal gemme i en cookie?
Ville det være en god ide at gemme brugerens kodeord (krypteret) og så
tjekke det hver gang, han besøger siden (i global.asa filen)?
| |
Casper Bang (09-01-2005)
| Kommentar Fra : Casper Bang |
Dato : 09-01-05 20:00 |
|
> Hvad mener du så man ellers skal gemme i en cookie?
> Ville det være en god ide at gemme brugerens kodeord (krypteret) og så
> tjekke det hver gang, han besøger siden (i global.asa filen)?
Nej, en god idé synes jeg ikke det ville være... enhver der bruger
computeren kan så kopiere cookien, og for eksempel logge ind fra deres egen
computer med den.
Den bedste løsning er efter min mening en session; du gemmer bare
brugernavnet i en session-variabel:
session("brugernavn") = rs("brugernavn")
og hver side brugeren besøger vil kunne hente denne værdi som med enhver
anden variabel. Du skal selv. først smide brugernavnet ind i din session,
når du har tjekket om brugeren giver det rigtige password.
| |
Jens Rosenkvist (10-01-2005)
| Kommentar Fra : Jens Rosenkvist |
Dato : 10-01-05 14:21 |
|
Casper Bang wrote:
> Den bedste løsning er efter min mening en session; du gemmer bare
> brugernavnet i en session-variabel:
> session("brugernavn") = rs("brugernavn")
> og hver side brugeren besøger vil kunne hente denne værdi som med enhver
> anden variabel. Du skal selv. først smide brugernavnet ind i din session,
> når du har tjekket om brugeren giver det rigtige password.
Ok. Jeg havde ellers lavet det med cookies, så man kun forblive logget
ind efter man havde lukket sin browser. (Selvfølgelige kun hvis man
valgte det.)
Er der så ikke en sikker måde at lave autologin på?
| |
Casper Bang (10-01-2005)
| Kommentar Fra : Casper Bang |
Dato : 10-01-05 16:24 |
|
> Er der så ikke en sikker måde at lave autologin på?
Nej, det er aldrig sikkert at lave et autologin... de informationer du
gemmer på brugerens computer kan altid kopieres og misbruges på en anden
computer.
Du bliver nødt til at opveje risikoen der er ved at gemme de data på
klientens computer, imod hvor meget gladere dine brugere bliver.
Er det risikoen værd?
Men hvis du vil gøre det, er det smarteste nok at kryptere både brugernavn
og password i cookien, så det ikke er så nemt at hive fat i for en ondsindet
person.
| |
|
|