Ich bin mir fast sicher, dass in der konkreten Implementierung nicht zwischen 
1, 2, 3 und 6 unterschieden wird sondern der Zugriff auf ein Objekt mit 
irgendeiner Aufgabe. Hier kann ich mir durchaus vorstellen, dass es Situationen 
gibt in denen der Benutzer einfach nicht den kompletten Wertebereich lesen 
können soll.

Was mach ich in einem Onlineshop wenn der Kunde den POST-Request der einen 
Artikel in den Warenkorb legt manipuliert? Möglicherweise hab ich Produkte 
deren Kaufberechtigung an Regeln gebunden sind, Altersbeschränkung bei Alkohol 
zum Beispiel oder Gebindegrößen nur für Geschäftskunden.
Wenn es dann in den Checkout geht und der Kunde einen Warenkorb bestellen 
möchte kann ich Payment-Types für Paypal, Nachnahme und Vorkassenzahlung haben, 
und für Kunden die bereits eine erfolgreiche bezahlte Bestellung über 
mindestens 25€ abgeschlossen haben erlaube ich auch den Payment-Type der 
Zahlung per Rechnung.

Nicht mal wenn es sich nur um GET-Requests handelt und RealURL samt cHash 
sicherstellen, dass der Benutzer den ID-Parameter verändert bin ich sicher. Ich 
kann mir News vorstellen die in Gruppen sortiert sind und News bestimmter 
Gruppen sind nur für angemeldete Benutzer bestimmter Gruppen gedacht. Was 
hindert einen angemeldeten Benutzer daran, einen gültigen Link auf eine 
News-Seite an eine fremde Person weiterzuleiten?

Grundsätzlich ist „der Benutzer kann den Link oder die ID nicht kennen“ keine 
sinnvolles Berechtigungskonzept.

Einen Validator davor zu schalten dürfte die einfachste Lösung sein, auch wenn 
ich streng genommen die Zugriffskontrolle nicht als Aufgabe der Validierung 
betrachte.

Gruß,

Am 20.01.17, 17:12 schrieb "typo3-german-boun...@lists.typo3.org im Auftrag von 
Michael Kasten" <typo3-german-boun...@lists.typo3.org im Auftrag von 
h...@m-kasten.de>:

    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]

Stephan Schuler
Web-Entwickler | netlogix Web Solutions

Telefon: +49 (911) 539909 - 0
E-Mail: stephan.schu...@netlogix.de
Web: websolutions.netlogix.de



----------------------------
Neu: Wir sind Amazon Web Services Partner. Mehr erfahren:
https://websolutions.netlogix.de/technologie/amazon-web-services-aws
----------------------------




netlogix GmbH & Co. KG
IT-Services | IT-Training | Web Solutions
Neuwieder Straße 10 | 90411 Nürnberg
Telefon: +49 (911) 539909 - 0 | Fax: +49 (911) 539909 - 99
E-Mail: i...@netlogix.de | Web: http://www.netlogix.de

netlogix GmbH & Co. KG ist eingetragen am Amtsgericht Nürnberg (HRA 13338)
Persönlich haftende Gesellschafterin: netlogix Verwaltungs GmbH (HRB 20634)
Umsatzsteuer-Identifikationsnummer: DE 233472254
Geschäftsführer: Matthias Schmidt



_______________________________________________
    TYPO3-german mailing list
    TYPO3-german@lists.typo3.org
    http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german

_______________________________________________
TYPO3-german mailing list
TYPO3-german@lists.typo3.org
http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german

Antwort per Email an