Aquariophile: -> Apache::Session::MySQL -> Variablen sicher übergeben

Beitrag lesen

Frohe Ostern!

Vorhanden:
Mein Script mit mehreren Bedingungen.

In der Endbedingung werden die übermittelten Daten
in die MySQL-Datenbank geschrieben.

Und zwar genau dort in die DB geschrieben,
... WHERE ID=$ID

$ID wurde bisher im Url von der ersten Bedingung (Einloggen)
bis zum schluss (wo die DB geschrieben wird) mitgeschleppt.

Das schaute in der Endbedingung so aus:
$ID = $cgi->param("id");

gut, jetzt geht aber der bösartige, eingeloggte User her,
und bastelt mal aus id=123  ein bisschen herum im URL
und macht id=999 daraus.

Dann editiert das Script in der Endbedingung
den total falschen User in der DB !!

Ich dachte auch schon daran,
die Daten simple per POST und nicht per GET zu übermitteln,
aber das ist mir nicht die sicherste Variante.

Ab hier wieder aufpassen *g*

##################################

Gut,
also dachte ich daran,
das ganze gleich in der allerersten Bedingung,
also der Login-Bedingung so einzubauen,
dass der die "id" die sich beim login ergibt in der SESSION
abzuspeichern,
und zum Schluss wieder aus der Session auszulesen,
um mit der ID dann die DB zu schreiben.

Das Modul für die Sessions ist:
Apache::Session::MySQL

In der ersten Routine (beim Login) müsste ich dann halt machen:

$session={'id'} = $id_von_DB

somit wäre die ID in der Session....

Die ID bekommt das Script an dieser Stelle
dank der username/passwort Kombination aus der DB.

Einziges Problem:
Einen normalen $cgi->param("foo") kann man ja im Browser ändern.

Kann der im prinzip dieses oben genannte
$session{'id'} auch im Browser verändern?

Die Eigentliche Frage:

Also im Prinzip ist ja die ID die
das Script zum Schluss zum schreiben der DB hernimmt
in seiner Session-ID dann drin,
aber angenommen der User hängt dann am URL an:

?session{'id'}=999

^^ der syntax ist sicher falsch für den Browser,
aber nur mal als Beispiel,
könnte er damit

$session{'id'} verändern????

Danke!

LG
Aquariophile

PS.: Wie soll ich das nun machen bitte?