Mysql
 sql >> Base de données >  >> RDS >> Mysql

Base de données PHP/SQL interrogeant les bonnes pratiques et la sécurité

La réponse de Javier qui a le lien owasp est un bon début.

Il y a quelques autres choses que vous pouvez faire plus :

  1. Concernant les attaques par injection SQL, vous pouvez écrire une fonction qui supprimera les instructions SQL courantes de l'entrée comme " DROP " ou " DELETE * WHERE ", comme ceci :

    *$sqlarray =array( " DROP ","or 1=1","union select","SELECT * FROM","select host","create table","FROM users","users WHERE");*

    Ensuite, écrivez la fonction qui vérifiera votre entrée par rapport à ce tableau. Assurez-vous que tout ce qui se trouve à l'intérieur de $ sqlarray ne sera pas une entrée commune de vos utilisateurs. (N'oubliez pas d'utiliser strtolower à ce sujet, merci lou).

  2. Je ne sais pas si Memcache fonctionne avec PHP 4, mais vous pouvez mettre en place une protection anti-spam avec Memcache en n'autorisant qu'un certain accès IP distant à la page process.php X fois sur une période Y.

  3. Les privilèges sont importants. Si vous n'avez besoin que de privilèges d'insertion (par exemple, traitement de commande), vous devez vous connecter à la base de données sur la page de traitement de commande avec un utilisateur qui n'a que des privilèges d'insertion et peut-être de sélection. Cela signifie que même si une injection SQL passait, ils ne pouvaient effectuer que des requêtes INSERT / SELECT et non supprimer ou restructurer.

  4. Placez les fichiers de traitement php importants dans un répertoire tel que /include. Ensuite, interdisez à toutes les adresses IP l'accès à ce répertoire /include.

  5. Mettez un MD5 salé avec l'agent de l'utilisateur + remoteip + votre sel dans la session de l'utilisateur, et faites-le vérifier à chaque chargement de page que le bon MD5 se trouve dans son cookie.

  6. Interdire certains en-têtes (http://www.owasp.org/index.php/Testing_for_HTTP_Methods_and_XST ). Interdire les en-têtes PUT (si vous n'avez pas besoin de télécharger des fichiers)/TRACE/CONNECT/DELETE.