Sécurité des bases de données
Sommaire
De nos jours, les bases de données sont des composants incontournables
des serveurs web et des applications en ligne, qui fournissent du contenu
dynamique. Des données secrètes ou critiques peuvent être stockées dans les
bases de données : il est donc important de les protéger efficacement.
Pour lire ou stocker des informations, il faut se connecter au serveur
de bases de données, envoyer une requête valide, lire le résultat et
refermer la connexion. De nos jours, le langage le plus courant pour ce
type de communication est le langage SQL
(Structured Query Language). Voir
comment un pirate peut
s'introduire dans une
requête SQL.
Comme on peut s'en douter, PHP ne peut pas protéger
les bases de données par lui-même. La section suivante présente les
notions de base pour protéger les bases de données, lors de la programmation
de scripts PHP.
Gardez bien cette règle simple en tête : la défense se fait par couches.
Plus il y a de tests pour protéger la base, plus faible sera la
probabilité de réussite d'un pirate. En ajoutant à cela un bon schéma de base
de données, on obtient une application réussie.
gabe dot aust at gmail dot com ¶1 year ago
The most significant way to protect databases is to simply use authentication! There are production systems online with null and default administrator credentials. See the recent "The Real World" hack...
Rule 1: Simply use authentication instead of not using it... Obviously do not save the credentials in a public-readable file.
Rule 2: Create a subsidiary account with access only to the live schema being used by your PHP app, i.e. never use the global DBMS admin account as a service login.
Rule 3: Block access at the DBMS end to only allow the web server to access the API. Most access is network based so that will involve filtering by IP.
Rule 4: You can obfuscate a bit more by setting a non-standard port but this may require code changes in the API calls you coded.
The above are some simple steps anyone can perform. More serious securing would likely involve setting up SSL connectivity.