Wie Sichtbarkeitsbereich von Superglobals einschränken?

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • #16
    Original geschrieben von onemorenerd
    @arkos: Masochist!
    OffTopic:

    ... fühl mich so erwischt

    **********
    arkos
    **********

    Comment


    • #17
      Original geschrieben von shammes
      Dann nenn mir eine Template-Engine die schnell ist, annähernd so mächtig wie PHP-selbst ist (in Bezug auf Ausgaben) und mit der man NICHT auf superglobals von PHP zugreifen kann.
      xsl?

      gruß
      peter
      Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
      Meine Seite

      Comment


      • #18
        Es ist doch wirklich nicht nötig, gleich die Templatesprache zu wechseln bzw. eine Templateengine einzusetzen. Es gibt doch genügend Möglichkeiten, die Superglobals für Templates unerreichbar zu machen.

        PHP Code:
        function safetpl($file) {
            
        $tpl file_get_contents($file);
            foreach (
        token_get_all('<'.'?php '.$tpl.' ?'.'>') as $t
                if (
        $t[0] == T_GLOBAL || $t[0] == T_FUNCTION || $t[0] == T_CLASS)
                    die(
        'unsafe template');
            unset(
        $_GET$_POST$_SESSION$_COOKIE$_ENV$GLOBALS);
            return eval(
        '?'.'>'.$tpl);

        Das ist nur proof of concept, kein Produktivcode. Er zeigt, dass man ziemlich leicht prüfen kann, ob ein Template "sicher" ist. Es muß sich dazu nur an eine einzige Spielregel halten: Den aktuellen Scope nicht verlassen. Also kein global, function, class und evtl. auch kein eval, system usw.
        Solche "sicheren" Templates haben dann keinen Zugriff mehr auf die Superglobals, wenn man die im aktuellen Scope löscht.

        Comment

        Working...
        X