einfach {php} deaktivieren (warum smarty doof ist #4)


Ich habe gerade eine halbe Stunde damit verbracht herauszufinden, wie man die Ausführung von php-Code in Smarty Templates deaktiviert (*). Das Ergebnis:

Man muss wohl $pSmarty->security[‚PHP_TAGS‘] auf false stellen. Dummerweise greifen dann aber auch weitere Security-Einstellungen, die dann die Ausführung von diversen Modifiern (die ich natürlich nicht deaktivieren möchte) verhindern. Die Ausführung von Modifiern kann man zwar offenbar per Whitelist wieder zulassen, aber erstens ist mir der intuitive Wert für $pSmarty->security_settings[‚MODIFIER_FUNCS‘] = array( ‚ja was für ein array denn?‘) nicht so ganz klar und zweitens habe ich auch nicht den Nerv jetzt alle Modifier zu whitelisten… argh!

Die Quick ’n Dirty Lösung lautet übrigens:

Smarty_Compiler.class.php ungefähr Zeile 560 vor
if ($this->security && !$this->security_settings[‚PHP_TAGS‘]) {
ein return;

(*) Zähneknirschend muss ich dabei gestehen, dass ich hier tatsächlich einen sinnvollen Anwendungsfall für Smarty vorliegen habe: Ein Produkt soll für den arabischen Raum (also Spiegelverkehrt, von Rechts nach Links) fitgemacht werden und die externe Agentur soll keinen Zugriff auf den restlichen Sourcecode erhalten.

Hinterlasse einen Kommentar