Thread Perl für Weboberflächen noch zeitgemäß (35 answers)
Opened by peterstu at 2018-03-11 08:29

rosti
 2018-03-13 14:04
#188143 #188143
User since
2011-03-19
3376 articles
BenutzerIn
[Homepage]
user image
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:

Code (perl): (dl )
1
2
3
4
my %datetime = (
    wide => localtime,
    timestamp => time
);


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)
oder man schreibt sich einen Wrapper. Und wie auch schon geschrieben, die Unzulänglichkeiten von CGI.pm liegen ganz woanders.

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.
Quote
Odd number of elements in hash assignment
käme da als Fehlermeldung sofern man Warnungen nicht unterdrückt!
Last edited: 2018-03-13 14:35:54 +0100 (CET)

View full thread Perl für Weboberflächen noch zeitgemäß