¿Cómo asegurar adecuadamente un $ _GET en PHP?

10

Encontré un SQLi en un sitio de trabajo de amigos. Informó a sus superiores y me permitieron realizar pruebas adicionales y también parchar el sitio. Después de revisar el sitio, el código vulnerable era un $ _GET. Simplemente agregué intval () para verificar la variable si era un número entero. Vuelvo a ejecutar sqlmap, w3af y algunos otros escáneres. Los agujeros parecían haber sido remendados. ¿Era este el parche adecuado? Si no es así, ¿cómo aseguro correctamente un $ _GET en PHP?

    
pregunta Digital fire 02.08.2012 - 16:02
fuente

1 respuesta

19

No importa si es $ _GET, $ _POST, $ _REQUEST, $ _FILE o incluso $ _SERVER. Es toda la entrada del usuario y está ahí para una posible fuente de un ataque. Lo que importa es cómo se utiliza la entrada del usuario. En el caso de la inyección SQL, convertirlo en un int, como intval() , funciona bien. Sin embargo, debe utilizar consultas parametrizadas con una biblioteca como sqli, adodb o pdo.

Pero la inyección de SQL es solo un problema en el owasp top 10 y solo un problema del miles de tipos de vulnerabilidad rastreados por el sistema CWE . No hay varita mágica para detener todas las vulnerabilidades.

    
respondido por el rook 02.08.2012 - 16:11
fuente

Lea otras preguntas en las etiquetas