Thread Perl für Weboberflächen noch zeitgemäß
(35 answers)
Opened by peterstu at 2018-03-11 08:29
Ich habs ja weiter oben schon erklärt wo das eigentliche Poblem liegt: In der Unzulänglichkeit des Enctypes. Mit Perl konnte man übrigens schon immer den scalaren Kontext erzwingen, man muss es nur wissen was beim Design der Anwendung vereinbart wurde und die Parameter entsprechend prüfen.
D.h., daß man nicht einfach so die param() Funktion im Listenkontext verwendet sondern vorher prüft und ggf. den scalaren Kontext erzwingt. Genau dasselbe Problem zeigt sich hier: Was auch nicht zu dem erwarteten Ergebnis Code (perl): (dl
)
1 2 3 4 $VAR1 = { 'timestamp' => 1520945690, 'wide' => 'Tue Mar 13 13:54:50 2018' }; führt weil man den Kontext nicht beachtet hat. Lösung Code (perl): (dl
)
(wide => scalar localtime) Und: Man kann auch mit den vorhandenen Enctypes so programmieren, daß keine Sicherheitslücken entstehen. Z.B. indem man Schlüsselparameter sauber trennt von Parametern die der Datenübertragung dienen. Genau das konnte man auch schon mit CGI.pm tun indem man davon ausgeht daß param() auch eine Liste liefern kann und wenn man das nicht haben will, mit scalar den scalaren Kontext erzwingt. Entweder haben das die Kollegen von CCC nicht gewußt oder mit fragwürdigen Absichten falsch in Szene gesetzt. Die Behauptung daß CGI.pm in dieser Hinsicht ein Sicherheitsproblem darstellt ist unsinnig! MfG PS: Dein Code geht übrigens schief wenn param() eine ungerade Anzahl an Listenelementen liefert. Quotekäme da als Fehlermeldung sofern man Warnungen nicht unterdrückt! Last edited: 2018-03-13 14:35:54 +0100 (CET) |