Leser: 22
1
2
3
4
5
my $functions = {
'admin_center' => \&disp_admin_center,
'disp_help' => \&disp_help,
'disp_list' => \&disp_list,
};
do "$pluginpath/myplugin1.pl" or die ("Plugin not loaded $!");
2010-01-05T13:56:09 pqoder möchtest du dir gerne durch manipulation der CGI-parameter jede beliebige subroutine aufrufen lassen?
2010-01-05T14:57:25 pqund wie willst du sicherstellen, dass da nicht irgendeine .pl aufgerufen wird? da musst du doch erst noch rumprüfen und sicherstellen.
2010-01-05T14:57:25 pqden ganzen mist spart man sich z.b. mit einer dispatchtabelle.
2010-01-05T14:57:25 pqsich dynamisch modul- oder skriptnamen aus CGI übergeben zu lassen, ohne vorher auf eine whitelist zu prüfen, ist unsicher bzw. wenn man es absichern will, letztendlich viel zu umständlich.
2010-01-05T14:57:25 pqbitte um erhellende aufklärung mittels eines stückchens code, der deine variante zeigt und sicher ist.
2010-01-05T15:10:00 bianca2010-01-05T14:57:25 pqbitte um erhellende aufklärung mittels eines stückchens code, der deine variante zeigt und sicher ist.
Da gibts nicht viel Code, ich nehme mir den CGI-Parameter und schaue mit if (-f "/home/pfad/pluginverz/$cgi_parameter_action.pl"){} im vordefinierten PlugIn-Verzeichnis nach, ob es die Datei gibt. Alles weitere dürfte Dir bestimmt geläufig sein.
2010-01-05T15:34:19 pqdu versuchst hier anscheinend, deine idee noch irgendwie zu retten. letztendlich musst du aber soviel beachten, was du ja noch nichtmal tust, wie man hier sieht, dass eine dispatch-tabelle einfach sicherer ist.
da kann man halt nix falsch machen.
2010-01-05T15:53:22 GwenDragon//EDIT: Vertrau einfach mal auf das Wissen der paar "alten Damen" (d.h. erfahrenen; Herren sind mitgemeint) hier in Bezug auf Websicherheit. ;)
2010-01-05T13:39:31 biancaDu könntest anstatt $name_der_sub Deinen Aufrufparameter action verwenden
2010-01-05T14:05:15 reneeIch mache das in der Regel so, dass man in einer Konfigurationsdatei angeben muss, welche Plugins geladen werden sollen.
2010-01-06T12:37:23 Escape2010-01-05T14:05:15 reneeIch mache das in der Regel so, dass man in einer Konfigurationsdatei angeben muss, welche Plugins geladen werden sollen.
Das hat aber auch den Nachteil dass der User für jedes Plugin zwei Dateien auf den Server hochladen muß und das Hauptskript jeweils zwei Dateien laden und verarbeiten muß - I/O ist teuer.
2010-01-06T12:42:04 biancaDas Laden immer aller Module (obwohl man pro Aufruf vermutlich nie alle braucht) fände ich persönlich jetzt an der Stelle viel überflüssiger als eine Konfigurationsdatei. Und wenn I/O an der Stelle Geld kostet, sollte man das doch zwingend anders lösen, oder?
2010-01-06T12:51:18 EscapeWird auch anders gelöst - nämlich indem nur die Dateien geladen werden die zur jeweiligen Funktion in Abhängigkeit stehen.
2010-01-06T12:42:04 biancaEdit: Wo genau liegt denn jetzt der Handlungsbedarf, der Dich an Deiner bisherigen Lösung zweifeln läßt?
2010-01-06T12:57:26 EscapeLeider zweifele ich meine Lösungen nahezu grundsätzlich an ...
gehe immer davon aus dass ich mal wieder mit Blindheit geschlagen bin und es von daher einen besseren oder einfacheren Weg gibt.
2010-01-06T13:29:56 reneeIch brauche halt sehr häufig Plugins, die noch spezielle Konfigurationsparameter brauchen. Das kann ich mit Deinem Ansatz nicht lösen.