Ja, det är sårbart. Du pratar värden direkt från användarinmatning och placerar dem i din fråga.
Du bör titta på mysql_real_escape_string
, eller (helst) använd MySQLi som tillhandahåller parametriserade frågor. SQL-injektioner orsakas av att användardata injiceras som SQL-kod istället för data. Det enda sanna sättet att säkra en fråga är att använda parametriserade frågor, som separerar data och frågetext på protokollnivå.
Dessutom lagras dina lösenord i klartext. Du bör använda en saltad hash-funktion som ett absolut minimum.
Du bör också ta en titt på dessa fantastiska frågor:
- Hur kan jag förhindra SQL-injektion i PHP?
- Säker hash och salt för PHP-lösenord
- Den definitiva guiden till form- baserad webbplatsautentisering