Heim > Backend-Entwicklung > PHP-Tutorial > PHP-Framework – Ein Teil des Codes im CI-Framework von PHP ist für mich selbst schwer zu verstehen. Ich hoffe, jemand kann mir einen Rat geben.

PHP-Framework – Ein Teil des Codes im CI-Framework von PHP ist für mich selbst schwer zu verstehen. Ich hoffe, jemand kann mir einen Rat geben.

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Freigeben: 2016-08-20 09:04:09
Original
972 Leute haben es durchsucht

<code>/*
 * ------------------------------------------------------
 * Security procedures
 * ------------------------------------------------------
 */

if ( ! is_php('5.4')) // 如果php版本大于等于5.4
{
    ini_set('magic_quotes_runtime', 0);

    if ((bool) ini_get('register_globals'))
    {
        $_protected = array(
            '_SERVER',
            '_GET',
            '_POST',
            '_FILES',
            '_REQUEST',
            '_SESSION',
            '_ENV',
            '_COOKIE',
            'GLOBALS',
            'HTTP_RAW_POST_DATA',
            'system_path',
            'application_folder',
            'view_folder',
            '_protected',
            '_registered'
        );

        $_registered = ini_get('variables_order');
        foreach (array('E' => '_ENV', 'G' => '_GET', 'P' => '_POST', 'C' => '_COOKIE', 'S' => '_SERVER') as $key => $superglobal)
        {
            if (strpos($_registered, $key) === FALSE)
            {
                continue;
            }

            foreach (array_keys($$superglobal) as $var)
            {
                if (isset($GLOBALS[$var]) && ! in_array($var, $_protected, TRUE))
                {
                    $GLOBALS[$var] = NULL;
                }
            }
        }
    }
}</code>
Nach dem Login kopieren
Nach dem Login kopieren

Ich verstehe nicht ganz, was diese Codes bewirken und welche Vorteile sie haben?
Ich bitte die Meister demütig um Rat.

Antwortinhalt:

<code>/*
 * ------------------------------------------------------
 * Security procedures
 * ------------------------------------------------------
 */

if ( ! is_php('5.4')) // 如果php版本大于等于5.4
{
    ini_set('magic_quotes_runtime', 0);

    if ((bool) ini_get('register_globals'))
    {
        $_protected = array(
            '_SERVER',
            '_GET',
            '_POST',
            '_FILES',
            '_REQUEST',
            '_SESSION',
            '_ENV',
            '_COOKIE',
            'GLOBALS',
            'HTTP_RAW_POST_DATA',
            'system_path',
            'application_folder',
            'view_folder',
            '_protected',
            '_registered'
        );

        $_registered = ini_get('variables_order');
        foreach (array('E' => '_ENV', 'G' => '_GET', 'P' => '_POST', 'C' => '_COOKIE', 'S' => '_SERVER') as $key => $superglobal)
        {
            if (strpos($_registered, $key) === FALSE)
            {
                continue;
            }

            foreach (array_keys($$superglobal) as $var)
            {
                if (isset($GLOBALS[$var]) && ! in_array($var, $_protected, TRUE))
                {
                    $GLOBALS[$var] = NULL;
                }
            }
        }
    }
}</code>
Nach dem Login kopieren
Nach dem Login kopieren

Ich verstehe nicht ganz, was diese Codes bewirken und welche Vorteile sie haben?
Ich bitte die Meister demütig um Rat.

Wenn Sie den Status von register_globals identifizieren, wenn die PHP-Version größer als 5.4 ist, können Sie sehen, dass das Array einige Schlüsselwörter enthält. Wenn register_globals aktiviert ist, bedeutet dies, dass alle Arten vorhanden sind Wenn Sie beispielsweise normalerweise $_POST verwenden, um die in der Post-Methode übergebenen Parameter abzurufen, werden sie bei der Injektion zu anderen Aktionen und müssen daher geschützt werden.

Informationen zu register_globals finden Sie unter
http://php.net/manual/zh/security.globals.php

Verwandte Etiketten:
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Aktuelle Ausgaben
PHP-Datenerfassung?
Aus 1970-01-01 08:00:00
0
0
0
PHP-Erweiterung intl
Aus 1970-01-01 08:00:00
0
0
0
Wie man PHP gut lernt
Aus 1970-01-01 08:00:00
0
0
0
Mehrere PHP-Versionen
Aus 1970-01-01 08:00:00
0
0
0
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage