Wie Sichtbarkeitsbereich von Superglobals einschränken?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

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

    ... fühl mich so erwischt

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

    Kommentar


    • #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

      Kommentar


      • #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.

        Kommentar

        Lädt...
        X