kleiner Fehler in AdminForm.php

Begonnen von alaniso, 17 September 2014, 10:38:14

⏪ vorheriges - nächstes ⏩

0 Mitglieder und 1 Gast betrachten dieses Thema.

alaniso

Hallo pmx-Team,
zuerst einmal Gratulation zum pMx2.1 - wirklich gut gelungen!

Ich habe bei der Entwicklung eines Moduls die Klasse "AdminForm" in Gebrauch und dabei einen kleinen Code-Fehler festgestellt:
Hierbei handelt es sich um die Werte von "Radio-Button" Objekte - der Wert ist generell auf "1" gesetzt (ist wohl aus der "Checkbox" übernommen :-) ).
Im angefügten Code habe ich die Zeile 760 dupliziert und im Original auskommentiert.
In der geänderten Zeile 761 ist nun die Variable anstelle von value='1' eingesetzt.

Falls ich richtig liege, wäre es schön die Änderung im Paket zu aktualisieren...

            case "radio":
                $class = self::extract_class($fextern);
                $fextern = self::get_attributes_from_array($fextern);
                $fvalue = intval($fvalue);
                $fixe = "";
                if ($fvalue == "1") $fixe = "checked=\"checked\"";
                $forminput = "<div class=\"" . $this->cssform . "-forminputline{$class}\">";
                $forminput .= $inputlabel;
                $forminput .= "<div {$linestyle2}>";
//                $forminput .= "<input type=\"radio\" name='" . $ffieldname . "' value='1' " . $fixe . " id=\"" . $inputid . "\" title=\"" . $fdesc . "\"" . $fextern . " /></div>";
                $forminput .= "<input type=\"radio\" name='" . $ffieldname . "' value='".$fvalue."' " . $fixe . " id=\"" . $inputid . "\" title=\"" . $fdesc . "\"" . $fextern . " /></div>";
                $forminput .= "<div {$linestyle3}>" . $fdescription . "</div>";
                $forminput .= "</div>";
                break;


Vielen Dank vorab - und weiter so mit pragmaMx,
André

Olaf

Danke für den Hinweis  :JC_highfive:

folgende Änderung müsste aber sein:            case "radio":
                $class = self::extract_class($fextern);
                $fextern = self::get_attributes_from_array($fextern);
                $fvalue = intval($fvalue);
                $fixe = "";
                if ($ffieldlen == "1") $fixe = "checked=\"checked\"";
                $forminput = "<div class=\"" . $this->cssform . "-forminputline{$class}\">";
                $forminput .= $inputlabel;
                $forminput .= "<div {$linestyle2}>";
                $forminput .= "<input type=\"radio\" name='" . $ffieldname . "' value='". $fvalue . "' " . $fixe . " id=\"" . $inputid . "\" title=\"" . $fdesc . "\"" . $fextern . " /></div>";
                $forminput .= "<div {$linestyle3}>" . $fdescription . "</div>";
                $forminput .= "</div>";
                break;
über $fvalue - bestimmt man den übergebenen Wert.... wobei jhier nur Nummerische Werte möglich sind
und über $ffieldlen wird festgelegt, welcher Radiobutton aktiviert ist....

ich werde das Ganze in der Klasse ändern.....
g

Olaf

Kein Support über PN, Mail etc.!
Bitte die Fragen im Forum stellen, nur so helfen die Antworten auch den anderen Usern.
Bitte auch die Boardsuche nicht vergessen, oft ist genau dein Problem schon an anderer Stelle gelöst worden!

alaniso

Hallo TerraProject,

vielen Dank für die schnelle Info!
Gibt es einen Grund für die "numerische" Einschränkung?
Das HTML-Object <Input type="radio"> laesst doch generell auch alphanumerische Werte zu...

Viele Grüße,
André

Olaf

Zitat von: alaniso am 17 September 2014, 13:29:57
Gibt es einen Grund für die "numerische" Einschränkung?
Das HTML-Object <Input type="radio"> laesst doch generell auch alphanumerische Werte zu...
...ja, es gibt einen Grund dafür ... Sicherheit
im Moment ist die Einschränkung mal so... Denkbar ist, daß ein User über ein Formular (AdminForm kann ja auch für das Frontend genutzt werden) und über den Valuewert des RadioButtons ggf. Schadcode einschleusen könnte. Natürlich könnte man das alles in der Klasse aus dem Value-Wert rausfiltern. Allerdings war dafür dazu noch keine Zeit, meinerseits und da die Übergabe nummerischer Werte eindeutiger ist, habe ich es erst mal so gelassen....

Ich hoffe es ist nicht so schlimm   :pardon:
g

Olaf

Kein Support über PN, Mail etc.!
Bitte die Fragen im Forum stellen, nur so helfen die Antworten auch den anderen Usern.
Bitte auch die Boardsuche nicht vergessen, oft ist genau dein Problem schon an anderer Stelle gelöst worden!

alaniso

Vielen Dank für die Info: Kein Problem für mich!

Webfan

Halllo Olaf,
mal ne Frage: Was ist denn an einem Formularfeld vom Typ radio unsicherer als ein beliebiges anderes Formularfeld? Der Server empfängt nur den Wert und nicht den Typ des Feldes, oder habe ich was verpasst?

mfg

Olaf

ok
im Grunde genommen hast du recht, aber im Normalfalle werden alle Input-Felder immer im Code überprüft, auf falsche Eingaben etc. bei Radiobutton, wird das aber nicht immer gemacht, da ja der value-Wert normalerweise vorgegeben wird. Dieser wird auch per POST übertragen und dann ja dann irgendwie ausgewertet oder ggf. gespeichert.... Also könnte dieser Wert auch von aussen geändert werden und somit ein Sicherheitsloch entstehen.... Das geht auch prinzipiell mit anderen Input-Aktionen, da passen aber die besseren Programmier meistens eh schon auf.... also ist RADIO nicht schlechter als andere, nur vielleicht weniger beachtet...

und so in dieser Form, macht es den Umgang mit AdminForm vielleicht ein wenig einfacher....
g

Olaf

Kein Support über PN, Mail etc.!
Bitte die Fragen im Forum stellen, nur so helfen die Antworten auch den anderen Usern.
Bitte auch die Boardsuche nicht vergessen, oft ist genau dein Problem schon an anderer Stelle gelöst worden!

Webfan