/ 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
Forhindre uønsket variabeloverførsel
Fra : Malte von Sehested


Dato : 31-10-01 11:00

Jeg har en side hvor man kan klikke på forskellige links. Disse indeholder
variable efter devicen href="mypage.php?var1=something&var2=somethingelse"

Problemet er at dette giver brugere muligheder for at kalde mypage.php med
deres egne indtastede variable. Er der en måde så jeg kan overføre variable
uden at brugeren kan rette, altså så det kun er programmet der kan få lov at
rette ?

Er der en måde så jeg kan skjule variable i kaldet af siden ?

Det samme problem har jeg i forbindelse med formularer. Jeg vil gerne have
at brugeren udfylder formularen, men hvis de indtaster de variabelnavne der
anvendes i min FORM direkte i kaldet af den eksekverende side kan dette lade
sig gøre. Kan man forhindre dette ?

/Malte



 
 
Thomas Lindgaard (31-10-2001)
Kommentar
Fra : Thomas Lindgaard


Dato : 31-10-01 11:45


"Malte von Sehested" <mvs@sek.ddf.dk> wrote in message
news:9roi54$dga$1@sunsite.dk...
> Jeg har en side hvor man kan klikke på forskellige links. Disse indeholder
> variable efter devicen href="mypage.php?var1=something&var2=somethingelse"
>
> Problemet er at dette giver brugere muligheder for at kalde mypage.php med
> deres egne indtastede variable. Er der en måde så jeg kan overføre
variable
> uden at brugeren kan rette, altså så det kun er programmet der kan få lov
at
> rette ?
>
> Er der en måde så jeg kan skjule variable i kaldet af siden ?

Mnaeh... hvis du ikke har et system, hvor brugeren skal logge ind, og du så
derudfra kan lave et check, så ved jeg ikke lige...

> Det samme problem har jeg i forbindelse med formularer. Jeg vil gerne have
> at brugeren udfylder formularen, men hvis de indtaster de variabelnavne
der
> anvendes i min FORM direkte i kaldet af den eksekverende side kan dette
lade
> sig gøre. Kan man forhindre dette ?

Jeg slynger lige en tanke ud i luften, som jeg ikke har nogen som helst
kendskab til: Sessions? Serveren skal så holde styr på hvilke sider
SessionID x må se(?).

/Thomas



Per Thomsen (31-10-2001)
Kommentar
Fra : Per Thomsen


Dato : 31-10-01 12:13


"Malte von Sehested" <mvs@sek.ddf.dk> skrev i en meddelelse
news:9roi54$dga$1@sunsite.dk...
> Jeg har en side hvor man kan klikke på forskellige links. Disse indeholder
> variable efter devicen href="mypage.php?var1=something&var2=somethingelse"
>
> Problemet er at dette giver brugere muligheder for at kalde mypage.php med
> deres egne indtastede variable. Er der en måde så jeg kan overføre
variable
> uden at brugeren kan rette, altså så det kun er programmet der kan få lov
at
> rette ?
>
> Er der en måde så jeg kan skjule variable i kaldet af siden ?

Tjah, du kan da pakke hver enkelt link ind i en lille formular, der sendes
med POST-metoden.
Men det har vist nogle konsekvenser for layoutet.

Du bør nok istedet lave et tjek for at variablene er valide.
Evt. kan du kombinere det med nogle tjeks på $HTTP_REFERER.
http://www.php.net/manual/en/language.variables.predefined.php

>
> Det samme problem har jeg i forbindelse med formularer. Jeg vil gerne have
> at brugeren udfylder formularen, men hvis de indtaster de variabelnavne
der
> anvendes i min FORM direkte i kaldet af den eksekverende side kan dette
lade
> sig gøre. Kan man forhindre dette ?

Det lyder som om at du har register_globals sat, det kan også være fint nok,
men hvis du
istedet (eller ydermere) har track_vars sat, har du lidt mere kontrol over
hvor variablene kommer fra.
Hvis du f.eks. har sendt en formular med POST metoden vil variablene være
tilgængelige i
det globale array $HTTP_POST_VARS.
Det vil gøre det mere besværtligt for brugere at sende deres egne variable
til dit script.
Og igen kan du evt. også lave nogle tjekt på $HTTP_REFERER.

MVH Per Thomsen,
http://www.pert.dk/



Malte von Sehested (31-10-2001)
Kommentar
Fra : Malte von Sehested


Dato : 31-10-01 12:41

Hej Per,

Mange tak for svaret.

Klart at man kan bruge $HTTP_REFERER. Det havde jeg ikke tænkt på. Super.

> Det lyder som om at du har register_globals sat, det kan også være fint
nok,
> men hvis du
> istedet (eller ydermere) har track_vars sat, har du lidt mere kontrol over
> hvor variablene kommer fra.

Hvordan sætter man det ?

> Hvis du f.eks. har sendt en formular med POST metoden vil variablene være
> tilgængelige i
> det globale array $HTTP_POST_VARS.

Hvordan checker man det ? Hvis der for eksempel er en variabel med navnet
var1 hvordan kan man så se om indholdet $var1 kommer fra POST eller er
skrevet ved direkte kald ?

/Malte




Niels Andersen (31-10-2001)
Kommentar
Fra : Niels Andersen


Dato : 31-10-01 13:15

"Malte von Sehested" <mvs@sek.ddf.dk> wrote in message
news:9roo3f$qq7$1@sunsite.dk...
> Klart at man kan bruge $HTTP_REFERER. Det havde jeg ikke tænkt på.
Super.

Men husk, at man kan selv skrive hvad det passer én som referer! Den er
ikke sikker, men de fleste kan ikke finde ud af at forfalske den.

> > Det lyder som om at du har register_globals sat, det kan også være
fint
> > nok, men hvis du
> > istedet (eller ydermere) har track_vars sat, har du lidt mere
kontrol over
> > hvor variablene kommer fra.
> Hvordan sætter man det ?

Fx. php.ini eller .htaccess.

> > Hvis du f.eks. har sendt en formular med POST metoden vil variablene
være
> > tilgængelige i
> > det globale array $HTTP_POST_VARS.
>
> Hvordan checker man det ? Hvis der for eksempel er en variabel med
navnet
> var1 hvordan kan man så se om indholdet $var1 kommer fra POST eller er
> skrevet ved direkte kald ?

I stedet for at hente værdien fra $var1, kan du hente den fra
$HTTP_POST_VARS['var1']. Så kan den ikke sættes ved bare at skrive den i
urlen.

--
Mvh.

Niels Andersen



Mogens Meier Christe~ (31-10-2001)
Kommentar
Fra : Mogens Meier Christe~


Dato : 31-10-01 13:39

"Malte von Sehested" <mvs@sek.ddf.dk> wrote:

> Klart at man kan bruge $HTTP_REFERER. Det havde jeg ikke tænkt på.
Super.

Husk, som en anden skrev, at denne metode ikke er sikker. HTTP_REFERER
kan være hvad-som-helst inkl. ikke sat.

> > Hvis du f.eks. har sendt en formular med POST metoden vil variablene
være
> > tilgængelige i
> > det globale array $HTTP_POST_VARS.

Husk at folk bare kan kopiere dit HTML, rette lidt i formen så "hidden"
bliver til "input" og så selv indtaste data efter forgodt-befindende!
Kombineret med HTTP_REFERER bliver det dog meget besværligt at snyde
med!

Jeg ved heller ikke noget om sessions, men synes at have hørt nogen
nævne "cookies" i den forbindelse? I så fald giver det heller ikke nogen
sikkerhed.

En helt anden tilgang kunne være at lægge de ønskede data ind i en
SQL-database (for lethed) eller sågar en unik fil (lidt besværligt) for
hver besøgs-runde?

På den måde er brugeren 100% afskåret fra at ændre i dataene!!!

Er det rigtigt formodet at det har noget med penge eller lign. at gøre?
Så ville jeg helt klart vælge den metode for at forhindre at folk giver
sig selv rabat osv.!


--
Mvh. Mogens
www.momech.dk


Malte von Sehested (31-10-2001)
Kommentar
Fra : Malte von Sehested


Dato : 31-10-01 14:17

> Er det rigtigt formodet at det har noget med penge eller lign. at gøre?
> Så ville jeg helt klart vælge den metode for at forhindre at folk giver
> sig selv rabat osv.!

Det har heldigvis intet med penge at gøre. Så ville jeg oprette en session
og styre det derigennem. Det drejer sig om en simpel lille side med et spil
der overfører point til hiscorelisten og dermed er meget let at snyde. Det
er ikke mig der har lavet, jeg prøver bare at finde en måde at rette det på
der kræver et absolut minimum af kodning af få til at fungere (nogenlunde)
sikkert...

I skal have tak for hjælpen!

/Malte



Kim Emax - ayianapa.~ (31-10-2001)
Kommentar
Fra : Kim Emax - ayianapa.~


Dato : 31-10-01 15:37


"Malte von Sehested" <mvs@sek.ddf.dk> skrev

> Det drejer sig om en simpel lille side med et spil
> der overfører point til hiscorelisten

Er der en præmie for at holde HiScore til et bestemt tidspunkt? Mindes mine
skoledage, hvor man fik en fl. Whiskey for at have rekorden d. 15. eller 1.
i måneden... jeg var dog så lille at jeg kun fik en kasse Yankie bars )

--
Take Care
Kim Emax
http://www.emax.dk
http://www.ayianapa.dk
http://www.artificial-dreams.dk
Køb din vin online på http://www.gmvin.dk,
Danmarks mest avancerede VinWebShop



Malte von Sehested (31-10-2001)
Kommentar
Fra : Malte von Sehested


Dato : 31-10-01 16:56

> Er der en præmie for at holde HiScore til et bestemt tidspunkt? Mindes
mine
> skoledage, hvor man fik en fl. Whiskey for at have rekorden d. 15. eller
1.
> i måneden... jeg var dog så lille at jeg kun fik en kasse Yankie bars )

Desværre ingen point...



Malte von Sehested (31-10-2001)
Kommentar
Fra : Malte von Sehested


Dato : 31-10-01 17:00

Undskyld... "præmie"



Mr. Funny (31-10-2001)
Kommentar
Fra : Mr. Funny


Dato : 31-10-01 21:30

On Wed, 31 Oct 2001 14:16:32 +0100, Malte von Sehested <mvs@sek.ddf.dk> enlightend everyone in dk.edb.internet.webdesign.serverside.php with:
>Det har heldigvis intet med penge at gøre. Så ville jeg oprette en session
>og styre det derigennem. Det drejer sig om en simpel lille side med et spil
>der overfører point til hiscorelisten og dermed er meget let at snyde. Det

Jeg har lavet en lille quiz, hvor det er styret af forbrugt tid. For at folk
ikke skal synde til sidst hvor de skal indtaste navn, opretter jeg en
md5sum. Faktisk er det en lidt speciel kombination af FLERE md5sum() kald,
hvor jeg klipper dele ud og laver nye md5sums af substrings med mere. Denne
checksum sendes så vidre sammen med start tiden, og til sidst checkes om
checksummen kan regenerers ud fra den medsendte starttid. Det gør at man
SKAL kende den precise kombination for at kunne synde. Kombineret med et
check på $HTTP_REFERE bliver det IKKE en let opgave at snyde, men det er
enormt enkelt at lave.

Hvis du ikke HELT forstod det kan du godt få en kopi af scriptet (Lidt
modificeret naturligvis så du ikke kan snyde i den færdige version ;)

For at studere mine forms, kan du kigge forbi
http://www.nikkiwebster.f2s.com/quiz/ den virker desværre kun i IE, da jeg
ikke har taget mig sammen til at få den til at virke med Opera og netscape.

--
Chano Andersen (chanoa@gmx.net)
MSN Messenger: chano_andersen@hotmail.com ICQ: 15377564
Yahoo! Messenger: mrfunny_dk AIM: mrfunnydk1

Niels Andersen (01-11-2001)
Kommentar
Fra : Niels Andersen


Dato : 01-11-01 07:25

"Mr. Funny" <mr.funny@kovu.mrfunny.yi.org> wrote in message
news:slrn9u0nq9.569.mr.funny@kovu.mrfunny.yi.org...
> Jeg har lavet en lille quiz, hvor det er styret af forbrugt tid. For
at folk
> ikke skal synde til sidst hvor de skal indtaste navn, opretter jeg en
> md5sum.
[...]

Jeg ville sådan set bare skrive start-tiden i sessionen. Så bliver den
aldrig sendt til klienten, som dermed ikke har mulighed for at ændre
den.

--
Mvh.

Niels Andersen



Mr. Funny (01-11-2001)
Kommentar
Fra : Mr. Funny


Dato : 01-11-01 21:42

On Thu, 1 Nov 2001 07:25:04 +0100, Niels Andersen <niels-usenet@myplace.dk> enlightend everyone in dk.edb.internet.webdesign.serverside.php with:
>Jeg ville sådan set bare skrive start-tiden i sessionen. Så bliver den
>aldrig sendt til klienten, som dermed ikke har mulighed for at ændre
>den.

Den tænkte jeg også selv på, men det kræver, at browseren har cookies
enabled, eller at man husker at medsende sessionID med hvert eneste request.

Desuden havde jeg ikke vidre styr på sessions da jeg lavede quizen. Desuden,
har jeg oplevet at min egen server ikke har slettet session data ved et kald
til session_destroy(), det er en anden og mere væsentlig grund til, at jeg
valgte ikke at benytte sessions.

Men hvad, det virker, og der har ikke været en eneste bug repport endnu. Dog
er det rimligt simpelt at fylde highscoren med det samme entry et på 100
gange hvis man har lyst. Det er dog løst ved, at man skal indtaste e-mail
hvorefter ens score bliver opdateret istedet for at der bare tilføjes et nyt
entry. Den nye version er dog ikke lagt online endnu, da vi har valgt at
lave updaten samtidigt med at der puttes flere spørgsmål i databasen. (Og
dem har jeg ventet på i et par måneder nu. Men hva' det er ikke min site, og
heller ikke min opgave at finde på spørgsmålene. (Heldigvis)

--
Chano Andersen (chanoa@gmx.net)
MSN Messenger: chano_andersen@hotmail.com ICQ: 15377564
Yahoo! Messenger: mrfunny_dk AIM: mrfunnydk1

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

Månedens bedste
Årets bedste
Sidste års bedste