Ho sentito dire (in relazione a C#/SQL Server, ma anche in relazione a PHP/MySql): Non sfuggire le stringhe manualmente: utilizzare le stored procedure invece.Perché mysql_real_escape_string() non dovrebbe evitare SQL Injection?
Ok, posso accettare questo suggerimento, ma perché? Molti dicono (anche su SO) mysql_real_escape_string()
è abbastanza, mysql_real_escape_string()
è buono, mysql_real_escape_string()
è il primo modo di protezione.
Perché? C'è un caso in cui mysql_real_escape_string()
può fallire? Almeno uno ... non ho bisogno di molti :)
La più grande debolezza è che si può dimenticare di usarlo! –
Troverete meno l'utilizzo delle stored procedure in MySQL che in SQL Server, ma l'uso di istruzioni preparate è solitamente quello che viene incoraggiato con le API PHP/MySQL. –
Non ho mai avuto problemi con mysql_real_escape_string(). Penso che la gente dice di usare le procedure di archiviazione, invece, è perché c'è una possibilità di dimenticare di usare mysql_real_escape_String(). – Khronos