Blinder sa base de donnée en php...

  • Auteur de la discussion Auteur de la discussion Linkid
  • Date de début Date de début
WRInaute discret
Bonjour, je suis en train de faire un script php de blog et je me demandais comment blinder ma base de donnée pour ne pas qu'on me supprime des tables...
Je ne connais pas beaucoup de fonction php le permettant, alors si vous pourriez les dire ici et les expliquer un peu, ça arrangerait tout le monde...

Merci !
 
WRInaute impliqué
comment pourrait-on supprimer des tables si ton script php ne comporte pas de failles le permettant?
 
WRInaute discret
Et en clair, vous ne pourriez pas m'expliquer quelques fonctions utiles, comme par exemple htmlentities,...
 
WRInaute impliqué
bah il y a pas vraiment de fonctions utile, mais il faut bien vérifier certaines choses avec tout opération sur tes données, ou sur ta base...

is_numeric, mysql_real_escape_string, addslashes, stripslashes et j'en passe

il faut tout connaitre ce genres de fonctions pour se prémunir contre des attaques par injection... entre autres!
 
WRInaute passionné
Les wrinautes experts en Php pourront t'indiquer les traitements spécifiques à appliquer à toutes les données que tu doit intégrer dans une db.

La règle de base est de ne faire confiance à aucun systèmes extérieur.

1. Les données saisies dans les formulaires par tes visiteurs. c'est le cas le plus classique. Des wrinautes t'expliqueront comment filtrer ces données.

2. les manipulations des en-têtes HTTP. Ex : WorPress <= 1.5.2 est sensible à une injection SQL par manipulation du User Agent lors des posts de commentaires. Il faut aussi filtrer ces données si tu désire les insérer dans ta db.

3. Ne pas faire confiance à un système externe pour gérer ta sécurité. Ex : AdoDB en Php.
La combinaison Ado Db < 4.71 et PostGreSql est sensible aux injections SQL.

4. S'assurer que les versions de Php utilisé par ton hébergeur fixe les principales failles de sécurité.
Php4 < 4.4.2 et Php5 < 5.1.2 sont sensibles à des attaques de type XSS par manipulation des en-têtes HTTP + exploitation d'une faille dans la gestion des messages d'erreurs de l'extension mysqli.


La sécurité est un sujet complexe et vaste.
Les liens donnés te permettent déjà de te familiariser avec différents type d'attaque et comment les contrer.
Perso, je ne suis ni expert en Php, ni expert en sécurité pour te donner des infos plus pratiques. désolé.

LE conseil indispensable pour sécuriser ta base de donnée.
Fait des sauvegardes quotidiennes de ta base.
 
WRInaute accro
spidetra a dit:
LE conseil indispensable pour sécuriser ta base de donnée.
Fait des sauvegardes quotidiennes de ta base.
Oui, B.A.BA très souvent oublié, ou négligé par les webmasters.
Lorsque ça tombe, ça fait mal, très mal.
 
WRInaute discret
Mais c'est surtout pour les mots de passe que ça m'inquiète... car si quelqu'un a un script permettant de décoder les mdp, je suis mal !

Sinon, merci pour les astuces !
 
WRInaute passionné
Linkid a dit:
Mais c'est surtout pour les mots de passe que ça m'inquiète... car si quelqu'un a un script permettant de décoder les mdp, je suis mal !

Sinon, merci pour les astuces !

Pour les mots de passe, la technique la plus classique se nomme : "grain de sel".
Tu utilise SHA1 pour coder tes mots de passe et pas MD5.
J'ai fait un post sur le "grain de sel", si je le retrouve, je t'envoie le lien. J'ai la flemme de le réecrire.
 
WRInaute accro
Tu peux faire dix sauvegardes par jour, ça ne sert à rien s'il n'est pas possible de la restaurer proprement ... et ça arrive
 
WRInaute passionné
Pour is_numeric à la réception d'un formulaire, n'est-ce pas plus simple et autant efficace de faire un :

Code:
$valeur = $_GET['valeur']+1-1;
?
 
WRInaute passionné
Quel intérêt ?

Bah personnellement, lorsque je code, je vais au plus simple et au plus rapide et de taper +1-1 est pour moi beaucoup plus rapide que d'écrire is_numeric(....) dans une condition.

+1-1 transforme la valeur en numérique si ce n'est pas le cas.
 
WRInaute accro
Robinson a dit:
Quel intérêt ?

Bah personnellement, lorsque je code, je vais au plus simple et au plus rapide et de taper +1-1 est pour moi beaucoup plus rapide que d'écrire is_numeric(....) dans une condition.

+1-1 transforme la valeur en numérique si ce n'est pas le cas.
hum...
pour la question de rapidité, moi je tappe is + CTRL J et je sélectionne le bon est c'est good..m'enfin le principale est que tout le monde y trouve son compte. Mais il me semble tout de même plus sur de tester avec une fonction adaptée pour..

Et la fonction is_numeric() est également utile lorsque l'on ne sait pas quel type l'on va réceptionner...afin de justement savoir et pouvoir continuer le traitement en fonction de cela...car danc certains cas il est possible de réceptionner sur une même variable des types différents. Là, is_numeric() et les autres sont nécessaires. :wink:
 
WRInaute passionné
erfff moi je développe avec gedit :) (bloc-notes sous linux)

Et je n'utilise que des entiers via les formulaires, ainsi que dans mes bases de données. Donc pour moi c'est le plus rapide mais c'est vrai que chacun développe en fonction de ses besoins.

Bref, tout ça pour dire que +1-1, c'est basique mais ça suffit à se protéger.
 
Discussions similaires
Haut