La compatibilidad de Snyk Code con el análisis de vulnerabilidades en PHP entra en beta
DeveloperSteve Coochin
2 de septiembre de 2021
0 minutos de lecturaLa compatibilidad de Snyk Code con el análisis de vulnerabilidades en PHP ya está disponible en beta. Ahora es rápido y sencillo identificar problemas de seguridad en código PHP.
Para comenzar, inicia sesión en Snyk o regístrate para obtener una cuenta gratuita. Una vez que hayas iniciado sesión en el panel, haz clic en el botón Agregar proyecto en la esquina superior derecha y conéctate a un repositorio que quieras analizar.

Desde allí, puedes conectarte a distintas plataformas de repositorios y ejecutar un análisis de vulnerabilidades de PHP en todos los repositorios que administras, incluso si son privados. También puedes analizar desde la CLI o un IDE. Explora otras formas de integrar Snyk Code en tu entorno de desarrollo.
Veamos las tres principales vulnerabilidades que podrían identificar los nuevos análisis de PHP y qué debes buscar en esta versión beta.
XSS
Las vulnerabilidades de secuencias de comandos entre sitios (XSS) permiten que un atacante inyecte código maliciosoen aplicaciones confiables. El ataque puede dirigirse al navegador de un usuario o inyectar código en el entorno de ejecución de la aplicación o en el sistema operativo.
En PHP, esto puede ocurrir por diversos motivos y suele estar relacionado con la sanitización inadecuada de los datos que ingresa el usuario. Lo expliqué con más detalle en mi publicación anterior sobre cómo evitar la inyección de código.
Veamos un ejemplo práctico para entender mejor qué buscar en este pull request para un repositorio.

En el ejemplo, puedes ver la comparación en paralelo, donde se agrega filter_var con el tipo de filtro FILTER_SANITIZE_NUMBER_INT para procesar la sanitización de la entrada $_POST. Este filtro elimina todos los caracteres excepto los dígitos y los signos más y menos.
Hash inseguro
El hashing mediante código permite cifrar de forma segura una cadena de caracteres y convertirla en un valor o una clave que representa la cadena original. A veces se usa para almacenar datos en una base de datos o durante la ejecución para usarlos más adelante. A menudo, el hashing es bidireccional, de modo que los datos cifrados se pueden almacenar y descifrar después.
Tradicionalmente, MD5 era el método estándar —sobre todo en PHP— para cifrar elementos como las contraseñas de usuario, hasta que en 2008 se demostró que estaba “criptográficamente vulnerado y no era adecuado para seguir usándolo”.
Al revisar este ejemplo de una corrección implementada en este repositorio, podemos ver que se establece null como valor predeterminado en la llamada a la función de clave firmada. Esto significa que, si no se pasa ningún valor a la función, se usará null de forma predeterminada y la función de clave firmada podrá manejarlo adecuadamente.

Inyección SQL
La inyección SQL es similar a XSS, pero esta vulnerabilidad permite inyectar una carga SQL maliciosa en una base de datos. En la seguridad de las aplicaciones, esto puede dar lugar a la creación de un usuario con privilegios elevados, a la exposición de datos o a su eliminación de la base de datos.
Es muy importante tener presente que, sobre todo cuando se procesan datos de usuario que deben interactuar con una base de datos, la sanitización adecuada es fundamental.
Al revisar otro repositorio, puedes ver que el pull request implementado usa filter_input_array de PHP para procesar los datos que se envían a esta función de base de datos.

Analiza tu código PHP con Snyk Code
Estos son solo algunos ejemplos comunes de la amplia base de conocimientos sobre vulnerabilidades de Snyk Code. Te invito a probarlo y ver qué identifica en tu código.
Es importante recordar que PHP en Snyk Code está en beta. Nos encantaría recibir tus comentarios para seguir mejorando la compatibilidad con PHP. Escríbenos si tienes preguntas o quieres conversar sobre tus hallazgos.
Aquí tienes otras lecturas recomendadas sobre seguridad en PHP:
Comienza con Capture the Flag
Aprende a resolver desafíos de Capture the Flag con nuestro taller virtual 101 a pedido.
