Sí, es vulnerable. Está hablando de valores directamente de la entrada del usuario y colocándolos en su consulta.
Debería mirar mysql_real_escape_string
, o (preferiblemente) use MySQLi que proporciona consultas parametrizadas. Las inyecciones de SQL son causadas por la inyección de datos de usuario como código SQL en lugar de datos. La única forma real de asegurar una consulta es utilizar consultas parametrizadas, que separan los datos y el texto de la consulta a nivel de protocolo.
Además, sus contraseñas se almacenan en texto sin formato. Debe usar una función hash salada como mínimo absoluto.
También deberías echar un vistazo a estas increíbles preguntas:
- ¿Cómo puedo evitar la inyección SQL? en PHP?
- Hash y sal seguros para contraseñas de PHP
- La guía definitiva para forma- autenticación basada en sitios web