Thomas Tschernich: magic_quotes_gpc wie ausschalten?

Es geht um Webspace bei Puretec, ich will irgendwie
magic_quotes_gpc ausschalten können, weil das eh
geschehen wird, wenn die mal die viel zu alte Version
4.1.1 updaten und ich dann alle Scripts umstellen
müsste.
Nur leider läuft PHP dort als CGI, d.h. .htaccess
entfällt ... und eine Beeinflussung per ini_set()
ist meines Erachtens auch überflüssig, weil die
gpc-Variablen zu dem Zeitpunkt doch schon behandelt
sein dürften.
Gibt's dazu ne Möglichkeit, oder wenns nicht anders
geht nen kleinen Workaround?

  1. Hallo,

    Gibt's dazu ne Möglichkeit, oder wenns nicht anders
    geht nen kleinen Workaround?

    Nur ein Workaround am Anfang eines jeden Scripts:

    if (is_array ($_GET)) {
      foreach ($_GET as $gkey => $gvalue) {
        $_GET[$gkey] = preg_replace ("/\\(["'])/", "$1", $gvalue);
      }
    }

    if (is_array ($_POST)) {
      foreach ($_POST as $pkey => $pvalue) {
        $_POST[$pkey] = preg_replace ("/\\(["'])/", "$1", $pvalue);
      }
    }

    if (is_array ($_COOKIE)) {
      foreach ($_COOKIE as $ckey => $cvalue) {
        $_COOKIE[$ckey] = preg_replace ("/\\(["'])/", "$1", $cvalue);
      }
    }

    Und eventuell das gleiche für $_REQUEST, sofern Du das verwendest.

    Grüße,

    Christian

    1. Jo funktioniert ... Danke
      Aber würde nicht theoretisch auch stripslashes auf jedes Element reichen?
      Löst mein Problem ... aber irgendwie dumm, da sich php damit doppelte Arbeit macht und damit meine Scripte nicht wirklich schneller werden.

      1. Hallo,

        Aber würde nicht theoretisch auch stripslashes auf jedes Element reichen?

        Sehe gerade im Manual nach - da hast Du recht. Ich dachte vorhin halt, dass Stripslahes evtl. zuviel "stripped".

        Löst mein Problem ... aber irgendwie dumm, da sich php damit doppelte Arbeit macht und damit meine Scripte nicht wirklich schneller werden.

        Blöd wird's vor allem bei einer DoS-Attacke, bei dem der Client die 8 MB Post-Limit (oder auf was das halt eingestellt ist) voll ausschöpft, möglichst mit sehr vielen kleinen Strings.

        Aber anders als in der php.ini ändern geht nicht, es sei denn, Du fragst beim Server-Admin an, ob er für Dich nicht eine extra php.ini anlegt (mit allen Einstellungen gleich nur halt magic_quotes_gpc off) und für Deine Domain den Handler für .php-Seiten auf diese andere .ini zugreifen lässt. Denke aber, dass das nicht passieren wird. Ich hasse magic_quotes_gpc auch, bist also in guter Gesellschaft.

        Grüße,

        Christian

        1. Hallo,

          wofür ist denn dann

          $wert = set_magic_quotes_runtime(0);

          da?

          Chris

          1. Moin,

            wofür ist denn dann
            $wert = set_magic_quotes_runtime(0);
            da?

            Das setzt/löscht magic_quotes_runtime (d'oh!).
            http://www.php.net/manual/de/configuration.php#ini.magic-quotes-runtime

            --
            Henryk Plötz
            Grüße aus Berlin

  2. Es geht um Webspace bei Puretec, ich will irgendwie
    magic_quotes_gpc ausschalten können, weil das eh
    geschehen wird, wenn die mal die viel zu alte Version
    4.1.1 updaten und ich dann alle Scripts umstellen
    müsste.

    Hm, derzeit hab ich davon noch nichts gehört, dass die Magic Quotes abgeschaltet werden sollen. Sind sie in Version 4.2.x auch noch nicht - und ich denke, dieses recht sicherheitsrelevante Feature (durch deine Anwesenheit) wird kaum leichtfertig ausgeschaltet werden, weil dann praktisch alle Skripte plötzlich ziemlich angreifbar werden könnten.

    Ich rechne nicht damit, dass sowas passiert.

    Oder verwechselst du das mit der angekündigten Abschaltung von register_globals?

    Gibt's dazu ne Möglichkeit, oder wenns nicht anders
    geht nen kleinen Workaround?

    Schlau wäre es, wenn du mit http://www.php.net/manual/en/printwn/function.get-magic-quotes-gpc.php abfragst, ob magic_quotes_gpc auf dem Server aktiv ist oder nicht und dann jeweils entsprechend verzweigst (also wahlweise mit stripslashes() den Originalzustand herstellst, wenn es on ist, oder mit addslashes() den escapten Zustand herstellst, wenn es off ist).

    - Sven Rautenberg

    1. Hi!

      Gibt's dazu ne Möglichkeit, oder wenns nicht anders
      geht nen kleinen Workaround?

      Schlau wäre es, wenn du mit http://www.php.net/manual/en/printwn/function.get-magic-quotes-gpc.php abfragst, ob magic_quotes_gpc auf dem Server aktiv ist oder nicht und dann jeweils entsprechend verzweigst (also wahlweise mit stripslashes() den Originalzustand herstellst, wenn es on ist, oder mit addslashes() den escapten Zustand herstellst, wenn es off ist).

      Auch immer wieder gerne genommen:

      <?
      phpinfo();
      ?>

      ;-)

      Grüße
      Andreas

      PS: Configuration >> PHP Core >> magic_quotes_gpc >> ON/OFF