Hallo,
die geforderte Mindestanzahl an Zeichen ist ein Zahlenwert, kein String. Insofern hätte ich hier eher %i oder %d als Platzhalter erwartet, nicht %s. Andererseits ist das mit den Datentypen ja sowohl in Javascript, als auch in PHP eine so unscharfe Geschichte, dass das möglicherweise sogar funktioniert.
stimmt, prinzipiell kann ich hier als Variable auch %i schreiben, das macht keinen Unterschied. Ich habe %s in Anlehnung an die sprintf-Funktion von PHP verwendet und weil die Zahl ja trotzdem Teil eines strings ist und auch selbst als string dargestellt wird.
jaja, aber die Philosopie, gerade auch bei sprinf, ist ja die, dass der Platzhalter den ursprünglichen Typ des Parameters angeben soll. Dass er hinterher Teil eines Strings wird, ist klar. Aber deswegen habe ich angedeutet, dass es PHP und Javascript mit den Datentypen eh nicht so eng sehen.
Das ist in C ganz anders: Wenn da im Formatstring für sprintf() ein %s steht, dann interpretiert die Funktion den übergebenen Parameter auch mit aller Gewalt als Zeiger auf eine Zeichenkette. Wenn dann beispielsweise der Zahlenwert 8 übergeben wird, will sprintf() auf eine Zeichenkette ab Adresse 0x00000008 im Arbeitsspeicher der Anwendung zugreifen. Das ist dann eventuell ein nicht erlaubter Zugriff, und die Anwendung fliegt mit Memory Access Violation achtkantig raus.
Das kann eigentlich nur clientseitig passieren. Und auf eine clientseitige Validierung sollte man sich sowieso nie verlassen. Die kann ein Komfortfeature sein, ist aber immer manipulierbar.
Eigentlich kann hier nichts passieren. Ist ja nur eine Ansammlung von strings.
Ja, aber sollte die JSON-Datei nicht urprünglich auch die Limits selbst enthalten? - Egal, ich wollte nur nochmal betonen, dass alles, was clientseitig abläuft, vom Nutzer manipulierbar und damit nicht vertrauenswürdig ist. Eine clientseitige Validierung von Eingaben ist nice to have, aber nach dem Absenden der Daten muss in jedem Fall noch eine serverseitige Validierung vor der Weiterverarbeitung erfolgen.
Bedenke auch, dass böse Buben vielleicht gar nicht dein Formular oder deine Web-App verwenden, um Daten an dein Script zu senden. Sondern Tools wie wget oder curl, mit denen sie sorgfältig handgestrickte Requests bauen können, die deine aufgestellten Regeln ganz gezielt verletzen.
Ich hatte anfangs die Idee, die Parameter (also minlength-, maxlength-Werte usw.) ebenfalls in der JSON-Datei zu speichern. Jedoch habe ich aufgrund von Sicherheitsbedenken davon Abstand genommen.
Ah, okay. Das hatte ich so noch im Hinterkopf.
Einen schönen Tag noch
Martin
--
Wie man sich bettet, so schallt es heraus.