¿Se puede explotar / usar de alguna manera la siguiente función para el comportamiento malicioso?

1

Estoy usando una clase principal de Site Engine que está construyendo la mayoría de mis páginas. Estoy usando esta función de idioma para cambiar el sitio web de idioma para todas mis páginas al comienzo de la clase de Site Engine:

'$defaultLang = 'en';

//Checking, if the $_GET["language"] has any value
//if the $_GET["language"] is not empty
if (!empty($_GET["language"])) { //<!-- see this line. checks 
    //Based on the lowecase $_GET['language'] value, we will decide,
    //what lanuage do we use
    switch (strtolower($_GET["language"])) {
        case "en":
            //If the string is en or EN
            $_SESSION['lang'] = 'en';
            break;
        case "tr":
            //If the string is tr or TR
            $_SESSION['lang'] = 'tr';
            break;
        default:
            //IN ALL OTHER CASES your default langauge code will set
            //Invalid languages
            $_SESSION['lang'] = $defaultLang;
            break;
    }
}

//If there was no language initialized, (empty $_SESSION['lang']) then
if (empty($_SESSION["lang"])) {
    //Set default lang if there was no language
    $_SESSION["lang"] = $defaultLang;
}

        Template::SetLanguage($_SESSION['lang']);'

Estoy haciendo dos preguntas:

  1. ¿Se puede explotar de alguna manera el domain.com/?language=LANG_HERE ?

  2. Ya que almaceno variables de sesión adicionales al iniciar sesión correctamente en el sitio web: $_SESSION['Account'], $_SESSION['Password'], $_SESSION['Email'] ¿Es posible que la variable de sesión lang sea explotada o manipulada? NO es la entrada del usuario, ya que la estoy configurando de acuerdo con la respuesta de ./?language=LANG_HERE , pero en general, ¿esta secuencia de comandos anterior puede ser explotada de alguna manera?

Lo siento si estas preguntas parecen estúpidas, pero aún estoy aprendiendo y necesito saberlo con seguridad. ¡Gracias!

    
pregunta Monk25 20.10.2014 - 15:55
fuente

1 respuesta

1

Su código se ve bien y no parece haber nada de lo que deba preocuparse.

Una o dos notas al margen:

Consideraría agregar recortar () a su variable para limpiar cualquier espacio en blanco.

Tengo un poco de curiosidad por el uso de if(!empty){}if(empty){} en lugar de if(!empty){}else{}

    
respondido por el David Houde 20.10.2014 - 16:59
fuente

Lea otras preguntas en las etiquetas