Hallo alle zusammen,
ich schreibe gerade an einem PHP / SQL CMS mit Shop System,
etwas genauer gesagt schreibe ich gerade einige Scripte die Daten in der dazugehörigen Datenbank verändern. Um die zu bearbeitenden Datensätze zu erkennen reiche ich durch die Scripte momentan per hidden input Feld die Datensatznummer weiter
Beispiel:
in einem anderem Script (momentan schaffe ich mir sowas wie eine code basis) wird der Wert dann geändert:
Die daten kommen auch wieder per $HTTP_POST_VARS rein. Jetzt weiss ich aber das hidden input Felder vom Client veränderbar sind und mehr als auf is_numeric(); kann ich da nicht prüfen.
Jetzt ist meine Frage (da dass Script später auf Logins per session ID laufen soll) ob es Sinn macht noch eine Datenbank Tabelle zu erstellen in der Solche Informationen (wie den zu bearbeitenden Datensatz usw) vorübergehend gespeichert werden.
Ich denke da an eine Tabelle mit Primary Key Feld 'editnr' mit dem Attribut AUTO_INCREMENT in dem dann die session ID und die Daten zur bearbeitung gespeichert werden.
So kann ich dann prüfen ob die Daten von einem Client mit der gleichen Session ID kommt und kann sicherstellen dass über änderungen im Quelltext wenigstens nicht direkt die zu bearbeitenden Datensätze geändert werden können.
Macht dass ganze Sinn oder bin ich da zu Paranoid? Ich gehe ja davon aus, das nur mit einem gültigem Login die Datensätze bearbeitet werden können. Ist dass Auslagern in der Datenbank dann nicht überflüssig da sich der jeweilige User ja schon "identifiziert" hat?
Ich hoffe ich konnte meine Überlegung eindeutig darstellen, falls ihr noch Informationen zum Aufbau der Datenbank o.ä. braucht sagt es ich poste es direkt.
vielen Dank im voraus
rusty
ich schreibe gerade an einem PHP / SQL CMS mit Shop System,
etwas genauer gesagt schreibe ich gerade einige Scripte die Daten in der dazugehörigen Datenbank verändern. Um die zu bearbeitenden Datensätze zu erkennen reiche ich durch die Scripte momentan per hidden input Feld die Datensatznummer weiter
Beispiel:
Code:
$kategorienr = $HTTP_POST_VARS['kategorienr'];
$sql = "SELECT name FROM mcs_produkt_kategorien WHERE kategorienr = $kategorienr";
$result = mysql_query($sql, $Server);
...
<form action="produkt-kategorie-bearbeiten.php" method="post">
<?php
if($result) {
$data = mysql_fetch_array($result);
?>
<input type="hidden" value="<?php echo $data['kategorienr']; ?>">
<input type="text" value="<?php echo $data['name'] ?>" name="name"/>
<input type="submit" value="bearbeiten"/>
<?php
}
else {
echo $ErrorContent5;
}
?>
</form>
in einem anderem Script (momentan schaffe ich mir sowas wie eine code basis) wird der Wert dann geändert:
Code:
$sql = "UPDATE mcs_produkt_kategorien SET name = $name WHERE kategorienr = $kategorienr";
Die daten kommen auch wieder per $HTTP_POST_VARS rein. Jetzt weiss ich aber das hidden input Felder vom Client veränderbar sind und mehr als auf is_numeric(); kann ich da nicht prüfen.
Jetzt ist meine Frage (da dass Script später auf Logins per session ID laufen soll) ob es Sinn macht noch eine Datenbank Tabelle zu erstellen in der Solche Informationen (wie den zu bearbeitenden Datensatz usw) vorübergehend gespeichert werden.
Ich denke da an eine Tabelle mit Primary Key Feld 'editnr' mit dem Attribut AUTO_INCREMENT in dem dann die session ID und die Daten zur bearbeitung gespeichert werden.
So kann ich dann prüfen ob die Daten von einem Client mit der gleichen Session ID kommt und kann sicherstellen dass über änderungen im Quelltext wenigstens nicht direkt die zu bearbeitenden Datensätze geändert werden können.
Macht dass ganze Sinn oder bin ich da zu Paranoid? Ich gehe ja davon aus, das nur mit einem gültigem Login die Datensätze bearbeitet werden können. Ist dass Auslagern in der Datenbank dann nicht überflüssig da sich der jeweilige User ja schon "identifiziert" hat?
Ich hoffe ich konnte meine Überlegung eindeutig darstellen, falls ihr noch Informationen zum Aufbau der Datenbank o.ä. braucht sagt es ich poste es direkt.
vielen Dank im voraus
rusty