Esto puede tener su complejidad. Para empezar veamos la línea:
$sql = "SELECT * FROM usuarios WHERE username='$user' AND password='$pass' ";
El comportamiento esperado sería que en user y password tengamos un usuario y contraseña normal, como "juan" y "alegria2012" . Al ejecutar la consulta tendríamos:
$sql = "SELECT * FROM usuarios WHERE username='juan' AND password='alegria2012' ";
Un ataque podría venir si se introduce como contraseña:
unacualquiera’ OR PASSWORD LIKE '%
El código de color es la inyección SQL a través de la cual el hacker o quien sea está intentando acceder maliciosamente. Lo que la query quedaría así:
$sql = "SELECT * FROM usuarios WHERE username='juan' AND password='unacualquiera’ OR PASSWORD LIKE '%
En este caso trata de entrar sin hacer más daño, pero podría escribir:
unacualquiera; DROP TABLE usuarios
Lo cual sería un intento por borrar la tabla de usuarios de la base de datos.
Una primera validación podría consistir en un condicional que busque caracteres como comas, puntos y comas, signo igual, paréntesis, palabras claves SQL como LIKE, TABLE, DROP, %, etc. y en caso de ser detectado no ejecutar el query.