Never trust users
oder
User content is evil

Grundsätzlich sind alle Usereingaben als schädliche Eingaben anzusehen.
Es sollte also nur das gespeichert werden was nicht schädlich und das nicht nur 
an einer Stelle
sondern an möglichst allen Stellen bei der Strecke zur und von der Datenbank.

> Ein bestimmter User bekommt beim Bearbeiten eines Datensatzes in einem 
> Dropdown 3 Werte zur Auswahl
> (uid 1, 2 und 3) - Mehr sieht er nicht. Er ändert vor dem Absenden den Value 
> einer Option von z.B.
> value="3" auf value="6" und schickt das Formular ab.

Dieser Fall ist aus meiner Sicht wenig realistisch, was soll der User denn 
damit bezwecken können,
soweit wie das beschrieben ist ändert sich hier nur eine Zahl, das ist für das 
System uninteressant.
(Es sei den der User wählt hier sowas wie eine Berechtigung oder eine 
Gruppenzugehörigkeit, dann
aber hast du schon den ersten großen Fehler in deiner Architektur)

Interessanter wird es doch wenn dein User den Value auf irgendwas anderes als 
eine Zahl ändern kann
(Gefahr für deine DB) und das dann an anderer Stelle wieder ausgegeben wird 
(Gefahr für alle anderen)

Alle Eingaben müssen vor der Persistierung validiert werden, also immer auf 
Datentyp, ggf auch
Datenlänge und Formate. Dann sind ggf. alle bekannten schädlichen Steuerzeichen 
zu entfernen oder zu
maskieren (unterbinden von DB Anweisungen, Unterbinden von Inhalten die beim 
ausspielen XSS
erzeugen) Hierbei kann man auch serverseitig z.B. bei Verwendung von Apache 
noch eine FW Hochziehen
(mod_Security) dann findet die Prüfung nicht nur auf Anwendungsebene statt.

> Eigentlich wäre doch die einfachste Lösung bei der Update-Action nochmal zu 
> prüfen ob sich der vom
> User gesetzte Wert in der Liste der "erlaubten" Werte ist, oder?

Die Valdierung findet vor dem Aufruf der jeweiligen Action insert oder update 
statt

https://docs.typo3.org/typo3cms/ExtbaseFluidBook/9-CrosscuttingConcerns/2-validating-domain-objects.html

So Freitag also my2cent

-- 
Michael Kasten | http://m-kasten.de
Im wirklichen Leben gibt es kein [Strg]+[Z]
_______________________________________________
TYPO3-german mailing list
TYPO3-german@lists.typo3.org
http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german

Antwort per Email an