Folgendes, ich arbeite an einem System wo man Artikel eintragen und editieren kann.
Das Anlegen klappt auch soweit, aber nun grübel ich an der editieren Funktion, und zwar im Bezug auf Sicherheit.
Ich rufe den Artikel so auf: createeditarticle.php?articleid=562&action=edit
Nach dem Aufruf lädt ein Formular wo die Daten des Artikels zum editieren bereitstehen. Kurz zuvor, im PHP-Code, speicher ich die ArticleID im $_SESSION-Array unter $_SESSION['ArticleID']
um beim anschließenden editieren den Artikel in der Datenbank anhand der ArticleID zu finden.
Das Problem dabei:
Wenn jemand 2 Artikel gleichzeitig zum editieren öffnet, z.B. Artikel 123 und danach direkt auch 124, ohne das Editieren von 123 beendet zu haben, ist $_SESSION['ArticleID'] ja zuerst 123 und dann 124.
Wenn er dann aber zuerst 123 editiert und das Formular abschickt, verändert er ja ungewollt statt 123 die danach aufgerufene 124.
Ich könnte nun die ArticleID in einem hidden-Feld des Formulars speichern, doch habe ich gelesen das dies nicht so gut ist in dem Hidden-Feld solche Daten abzulegen, weil der User/Hacker diese ja ändern kann und dann ggf. auch Artikelnummern eingeben kann, zu denen er gar keinen Zugang hat.
Wie kann ich die ArticleID also im Session-Array speichern, ohne das die von einem gleichzeitig aufgerufenen anderen Artikel überschrieben wird. Geht das überhaupt? Oder was gibt es da für eine Lösung?
Wahrscheinlich muss ich einfach beim editieren prüfen, ob er diesen Artikel editieren darf. So würde es völlig egal sein, ob jemand böswillig den HIDDEN-Value editiert, denn er könnte den Artikel ja sowieso nicht editieren.
Das Anlegen klappt auch soweit, aber nun grübel ich an der editieren Funktion, und zwar im Bezug auf Sicherheit.
Ich rufe den Artikel so auf: createeditarticle.php?articleid=562&action=edit
Nach dem Aufruf lädt ein Formular wo die Daten des Artikels zum editieren bereitstehen. Kurz zuvor, im PHP-Code, speicher ich die ArticleID im $_SESSION-Array unter $_SESSION['ArticleID']
um beim anschließenden editieren den Artikel in der Datenbank anhand der ArticleID zu finden.
Das Problem dabei:
Wenn jemand 2 Artikel gleichzeitig zum editieren öffnet, z.B. Artikel 123 und danach direkt auch 124, ohne das Editieren von 123 beendet zu haben, ist $_SESSION['ArticleID'] ja zuerst 123 und dann 124.
Wenn er dann aber zuerst 123 editiert und das Formular abschickt, verändert er ja ungewollt statt 123 die danach aufgerufene 124.
Ich könnte nun die ArticleID in einem hidden-Feld des Formulars speichern, doch habe ich gelesen das dies nicht so gut ist in dem Hidden-Feld solche Daten abzulegen, weil der User/Hacker diese ja ändern kann und dann ggf. auch Artikelnummern eingeben kann, zu denen er gar keinen Zugang hat.
Wie kann ich die ArticleID also im Session-Array speichern, ohne das die von einem gleichzeitig aufgerufenen anderen Artikel überschrieben wird. Geht das überhaupt? Oder was gibt es da für eine Lösung?
Wahrscheinlich muss ich einfach beim editieren prüfen, ob er diesen Artikel editieren darf. So würde es völlig egal sein, ob jemand böswillig den HIDDEN-Value editiert, denn er könnte den Artikel ja sowieso nicht editieren.
Zuletzt bearbeitet: