Oui, c'est vulnérable. Vous parlez des valeurs directement à partir de l'entrée de l'utilisateur et vous les placez dans votre requête.
Vous devriez regarder mysql_real_escape_string
, ou (de préférence) utilisez MySQLi qui fournit des requêtes paramétrées. Les injections SQL sont causées par le fait que les données utilisateur sont injectées sous forme de code SQL au lieu de données. Le seul véritable moyen de sécuriser une requête consiste à utiliser des requêtes paramétrées, qui séparent les données et le texte de la requête au niveau du protocole.
De plus, vos mots de passe sont stockés en clair. Vous devez utiliser une fonction de hachage salé au minimum absolu.
Vous devriez également jeter un œil à ces questions géniales :
- Comment puis-je empêcher l'injection SQL en PHP ?
- Hash et salt sécurisés pour les mots de passe PHP
- Le guide définitif pour former- authentification basée sur le site Web