La mejor manera de evitar las inyecciones es usar Declaraciones preparadas
.
Para declaraciones preparadas, prefiero usar PDO para manejar todas mis cosas de base de datos. Aquí hay un código de muestra de PDO que escribí para recuperar información básica de inicio de sesión:
$sql=new PDO("mysql:host=127.0.0.1;dbname=name","user","password");
$user=$_POST[user];
$query="select Salt,Passwd from User
where Name=:user";
$stmt=$sql->prepare($query);
$stmt->bindParam(':user',$user);
$stmt->execute();
$dr=$stmt->fetch();
$sql=null;
$password=$_POST[pass];
$salt=$dr['Salt'];
... etc.
Lea esto página para obtener más información sobre DOP. Si desea saber qué hace cada línea de código aquí, lea esto respuesta que le di a otra publicación.