Hallo Semjon,
Hallo alx
sowohl in Perl, als auch in PHP solltest du aber tunlichst vor
dem eval prüfen, ob da nicht „böse“ Funktionen drin sind.OK, aber das macht man doch sowieso.
Ja, war auch nur als Ergänzung gemeint, falls der Fragesteller deine eval-Lösung übernimmt.
Wenn du {tage} und {pers} durch 1 ersetzt und dann nur
[0-9+*/-] zulässt sollte das reichen, aber beliebige Eingaben
an eval weiterzugeben ist äußerst gefährlich, könnte ja unlink
oder was auch immer drin stehen.In Perl würde das gar nicht gehen, wenn man,
wie vorgesehen, mitperl -Tarbeitet, dann
*dürfte* man strings, die aus der Eingabe kommen,
keiner Funktion übergeben, die „draussen“ etwas
macht. Man muss sie explizit ‚un-tainten‘.
Im Prinzip ja (so was wie der Taint Mode in Perl wäre mal eine schöne Neuerung für PHP, könnte viele Sicherheitsprobleme vermeiden
), aber durch das s// ist das ja auch in deinem Code ge-un-tainted.
Wie das in PHP ist, kann ich nur vermuten. Es wird
Leute geben, die sowas einbauen woll(t)en, aber
niemals gegen den PHP-Mainstream anrennen können.Daher muss ich eben wissen, dass ich „fremde“ Strings
in PHP händisch zerlegen muss ehe ich damit irgend
etwas sinnvolles anstellen kann.
Natürlich, aber ich schreibe das lieber hier einmal mehr dazu, auch wenn der Fragesteller es evtl. selbst weiss, als wieder ein unsicheres Script mehr im Netz massenhaft SPAM versendet.
In meinen aktuellen Applikationen versuche ich
beim ‚un-tainten‘ sogar herauszufinden, ob der
Versuch einer ‚sql injection‘ stattfand und liefere
daraufhin freundliche Literaturhinweise zur Funktions-
weise dieser Angriffe aus …
Möchtest du die evtl. als Ergänzung zu FAQ:2435 schreiben 
Mit freundlichen Grüßen,
Alexander