Forhindre at bruker endrer verdi i POST input-felt.?

Mr Vest

Sjefen over alle sjefer!
Som mange vet så kan man jo altså i en POST-form legge inn skjulte felter, f.eks:

<input type="hidden" name"jeg_har_gjemt_meg" value="min_verdi">

Det eneste er at med f.eks Firebug for Firefox så kan man jo fort og gale endre verdien på denne. Finnes det noe jeg kan gjøre for å forhindre at denne verdien faktisk kan endres på?
 

Sjefskoder

Sjefskoder
<input type="hidden" name"jeg_har_gjemt_meg" value="min_verdi">

PHP:
$_POST['jeg_har_gjemt_meg'] = "hva_du_enn_vil";

Med denne enkle fnutt overstyres det som personen har skrevet i feltet.. ;)

Skriver jeg "pudding", i det feltet så overstyres det til, nettopp: "hva_du_enn_vil"..

En enkel å kjapp måte..
 

Mr Vest

Sjefen over alle sjefer!
Det eneste er bare at jeg ikke har noen måte jeg kan hente ut tilsvarende data på på side 2. Derfor må jeg på en eller annen måte få dratt med denne dataen fra side 1 til side 2 uten at brukeren kan endre på den.

Er det mulig med koden din Sjefskoder? Hva skjer dersom jeg setter inn kodesnutten din i formen? Var det det å sette den inn i formen du tenkte på?
 

Sjefskoder

Sjefskoder
Bare å teste det, Atle ;) så merker du det..

Hilsen en trøtt og veeeeldig sliten sjef :p
 

Mr Vest

Sjefen over alle sjefer!
Jeg fikk det faktisk ikke til å fungere med den kodesnutten. Det virker som at den rett å slett blir ignorert og verdien jeg endrer til blir printet ut allikevel. Forsøkte litt av hvert med den uten hell. :(

Finnes det ikke noen andre måter jeg kan dra med meg data fra side1 til side2 utenom POST og GET? Jeg kan ikke tenke meg noen andre måter jeg kan løse denne biten på uten og måtte dra med meg data fra side1 til side2 nemlig. Får tenke litt på alternative løsninger om ikke noe annet er aktuelt i en slik situasjon. :)


Edit. - Takk så mye for tips om å bruke session. Funker veldig bra. :)
 
Sist redigert:
Spørsmålet er vel hvorfor det er krise at denne verdien kan endres. Går ut fra at den uansett vil ha en av en rekke aksepterte verdier, og scriptet som du sender til vil selvsagt validere at dette ikke er en verdi som gjør skade ... Ikke sant?

Hva slags verdi er dette egentlig?

En ting jeg umiddelbart ser for meg at du kan gjøre med denne verdien for å få den fra side 1 til side 2 er å bruke action i form-taggen. Lag et php-script som sier at hvis verdien du har tenkt å overføre er lik "fisk", sender skjemaet data til torsk.php, og så går du inn i htaccess og setter torsk.php som et synonym for index.php?side=behandleskjema&hemmeligverdi=fisk .

Det er en mulighet, men det du bør gjøre her, om mulig, er å tilpasse scriptet så godt at det ikke egentlig spiller noen rolle om skjemaet blir hacket.
 

Mr Vest

Sjefen over alle sjefer!
Dette dreier seg egentlig kun om et tall slik at jeg kan hente ut informasjon med dette tallet fra databasen på side2. Det som er saken er at dette tallet også skal slette & oppdatere informasjon i databasen, og dersom brukeren da kan endre tallet til noe annet vil det bli endret feile rader i databasen. Jeg har ikke mulighet for å hente ut tallet i side2 siden dette blir hentet inn på side1 fra en GET-variabel. Derfor må jeg altså sende tallet fra side1 til side2.

Jeg skulle gjerne ha brukt .htacces men jeg føler det fort blir litt for manuelt, og at det på kort tid gjerne blir litt for mye å legge inn der. Derfor kunne jeg se for meg at en automatisk løsning var best.

Ellers funker det bra med bruk av sessions her, men jeg må jo innrømme jeg undrer meg på om ikke verdien i en session kan endres på.
 

Nextri

Rebel
på side 1

$_SESSION['id'] = $_GET['id'];

på side 2

$_POST['id'] = $_SESSION['id'];

Trenger ikke noe hidden felt i det hele tatt da.
 
Skjønner fortsatt ikke hvorfor du ikke bare på side 2 kan kjøre en sjekk og sørge for at man ikke får endre på informasjonen i databasen dersom man ikke har de rette tilgangene. Dersom brukeren prøver å endre på brukerinnstillingene til brukeren Atle, sjekk først om brukeren faktisk ER enten Atle eller en admin. Dersom brukeren prøver å slette en kommentar, sjekk først om brukeren er enten forfatter av kommentaren eller en admin. Og så videre ...
 

Mr Vest

Sjefen over alle sjefer!
Jaja, jeg fikk sessions til å fungere bra. Jeg bare undret meg på om det faktisk var mulig å endre på sessionsverdiene som ligger lagret i nettleseren jeg. :)

Nei, altså, det med at jeg ikke kan kjøre en slik sjekk (vanskelig å forklare) er fordi at brukeren skal ha tilgang til å endre alle disse radene i databasetabellen. Ja, jeg vet det høres kanskje litt rart ut, men det er bare det at når brukeren sitter på side1 med GET-variabel X da skal brukeren kun ha mulighet for å oppdatere raden i databasen hvor ID = Getvariabel X og ikke Y. - Og dersom denne skulle vise seg å være Y istedenfor X da vil det allikevel bli oppdatert i databasen fordi brukeren skal ha rettighetene til og også oppdatere Y. (men jeg vil ikke at Y skal oppdateres på akkurat denne ene siden det dreier seg om. Kun X uansett om brukeren faktisk hadde klart å endret til Y.)

Ja, jeg vet - Det var en forferdelig rotete forklaring. Jeg aner ikke hvordan jeg kan forklare det på en annen måte...
 

Nextri

Rebel
Session variabler blir lagret i minne på serveren, så de kan ikke brukerne endre på noen måte. Det kan de derimot med $_COOKIE variabler
 

Mr Vest

Sjefen over alle sjefer!
Jaaa, skjønner. Jeg trodde det var sessions som ble lagret sammen med cookies jeg. Takk så mye for oppklaringa der. Da er jo løsninga med sessions skikkelig gode greier da. :)
 
Topp