¿Alguna vulnerabilidad en la entrada del usuario al servidor web que ejecuta Apache y PHP?

0

Es comprensible que se haga mucho hincapié en la eliminación de las aportaciones de los usuarios a PHP en un servidor web y numerosas opiniones sobre cómo hacerlo.

¿Puede alguien confirmar que no hay problemas de seguridad con el siguiente código PHP que puede comprometer el servidor a través de una vulnerabilidad?

if($_SERVER['QUERY_STRING'] == "kjg68KGH$88@kjhik8768"){
   $_SERVER['QUERY_STRING']=NULL;
   do stuff
} else {
   $_SERVER['QUERY_STRING']=NULL;
   do other stuff
}

o

if($_POST['the-var'] == "kjg68KGH$88@kjhik8768"){
   $_POST=[];
   do stuff
} else {
   $_POST=[];
   do other stuff
}

Si hay (no veo cómo podría haber), ¿por qué?

    
pregunta Jenn 03.02.2016 - 07:41
fuente

3 respuestas

0

Usar una comparación débil en PHP es casi siempre una mala idea, ya que puede provocar errores y vulnerabilidades. Consulte aquí para ver un ejemplo interesante .

En su caso, debería estar bien, aunque hay algunos casos de esquina, por ejemplo, "0x000000" == "000" , "1e1" == "10" o "0xBEEF" == "48879" .

Aparte de eso, no hay manera de comprometer el servidor con solo el código dado.

    
respondido por el tim 03.02.2016 - 20:15
fuente
0

El propio código no es seguro, ya que la mayoría de los servidores web son compatibles con rfc2616. Rfc2616 está obsoleto por rfc7230. Por lo tanto, se acepta una consulta con múltiples parámetros de consulta con el mismo nombre. ¿Cuál se presenta a su código? Si todo, ¿cuál escoges, basado en qué? Rfc7230 indica que dicha solicitud DEBE ser considerada como una solicitud no válida.

    
respondido por el Vicky Ronnen 19.08.2016 - 07:36
fuente
0

Ejemplo con una solicitud de obtención. Supongamos que quieres votar por Clinton enlace

Le envío un correo con una solicitud para votar por Clinton con un enlace enlace

Un servidor web no compatible con rfc7230 aceptará esta solicitud. Pero, ¿qué será entregado a php? El primer voto = sanders o los últimos o los tres como una matriz? ¿Votarás por? Sanders más probable ....

Por supuesto que no harías esto en una obtención, pero usarías una publicación. También en una publicación puedes agregar múltiples parámetros con el mismo nombre. Un servidor que no sea compatible con rfc7320 aceptará esto.

    
respondido por el Vicky Ronnen 19.08.2016 - 12:49
fuente

Lea otras preguntas en las etiquetas