htmlentities() is niet nodig om gegevens veilig te maken voor SQL. Het wordt gebruikt bij het herhalen van gegevenswaarden naar HTML-uitvoer, om XSS-kwetsbaarheden te voorkomen. Dat is ook een belangrijk beveiligingsprobleem waar u rekening mee moet houden, maar het heeft niets te maken met SQL.
addlashes() is overbodig met mysql_real_escape_string. Je krijgt dan letterlijke backslashes in je strings in de database.
Gebruik geen magische aanhalingstekens. Deze functie is al jaren niet meer beschikbaar. Implementeer geen PHP-code in een omgeving waar magische aanhalingstekens zijn ingeschakeld. Als het is ingeschakeld, schakelt u het uit. Als het een gehoste omgeving is en ze magische aanhalingstekens niet uitschakelen, neem dan een nieuwe hostingprovider.
Gebruik geen ext/mysql
. Het ondersteunt geen queryparameters, transacties of OO-gebruik.
Update:ext/mysql
is verouderd in PHP 5.5.0 (2013-06-20) en verwijderd in PHP 7.0.0 (2015-12-03). Je kunt het echt niet gebruiken.
Gebruik BOB , en maak uw zoekopdrachten veiliger door voorbereide zoekopdrachten te gebruiken .
Voor meer details over het schrijven van veilige SQL, lees mijn presentatie SQL-injectiemythen en Drogredenen .