Sim, é vulnerável. Você está falando valores diretamente da entrada do usuário e colocando-os em sua consulta.
Você deve olhar para
mysql_real_escape_string
, ou (preferencialmente) use MySQLi que fornece consultas parametrizadas. As injeções SQL são causadas por dados do usuário sendo injetados como código SQL em vez de dados. A única maneira verdadeira de proteger uma consulta é usar consultas parametrizadas, que separam os dados e o texto da consulta no nível do protocolo. Além disso, suas senhas são armazenadas em texto simples. Você deve usar uma função de hash salgada como um mínimo absoluto.
Você também deve dar uma olhada nessas perguntas incríveis:
- Como posso evitar injeção de SQL em PHP?
- Segurança de hash e sal para senhas PHP
- O guia definitivo para formar- autenticação de site baseada