Hyperion adlı üyeden alıntı: mesajı görüntüle
En garanti çözüm pdo, kullanımı da çok zor değil,

$db = mysql_connect()...; yerine $db = new \PDO(dsn, user, password);

mysql_query().. yerine de $stmt = $db->prepare(SQL); $db->execute(parametreler); $results = $db->fetchAll(); olacak. SQL i hazırlarken de "SELECT * FROM tablo WHERE id = '" . $_POST['id'] . "'" yerine "SELECT * FROM tablo WHERE id = ?" olacak, execute kısmında parametre verilecek, isteyen olursa detaylı bir örnek yapabilirim
mysql_real_escape_string,strip_tags bazende addslashes fonksiyonları can kurtarır mysql pdo biraz zor gibi geliyor başlangıçta yada benim için zordu.

ek olarak sql injection olayına karşı sorgularla veya post,get verilerini sınırlayarak daha güçlü bir koruma sağlayabilirsiniz.

SELECT * FROM yerine SELECT id,sifre FROM ---- LIMIT 1

Post veya Get den gelen verinin strlen ile limitlenmesi yada sadece numara yada harf ile sınırlandırmak vb bir çok önlem alabilirsiniz.