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

bind_param() nécessaire uniquement sur les valeurs saisies par l'utilisateur ou toutes ?

Techniquement, vous ne courez aucun risque si vous ne préparez pas de données qui ne proviennent pas de l'entrée de l'utilisateur. Cependant, il est fortement conseillé de le faire pour plusieurs raisons :

  1. Si vous oubliez de préparer des données d'entrée utilisateur quelque part, il est possible que cet utilisateur ait injecté quelque chose de divers dans une ligne de données que vous ne pensiez pas être une entrée utilisateur.
  2. C'est une bonne pratique de répéter ce que vous faites pour assurer la sécurité de votre serveur. Si vous commencez à tout mélanger, vous risquez beaucoup plus d'oublier de préparer les données là où elles sont réellement nécessaires.
  3. La préparation de vos données ne consiste pas seulement à empêcher l'injection SQL par des pirates. Cela évitera également certains problèmes de base de données au cas où vous créeriez accidentellement un bogue dans votre code. Par exemple :

Quelque part dans votre code, vous avez un système de journalisation qui ajoute un journal des erreurs à votre base de données. La chaîne serait :


Cette chaîne est générée par votre script. Par conséquent, vous ne le préparez pas. Pourtant, les guillemets à l'intérieur de cette chaîne provoqueront des erreurs dans votre base de données qui auraient pu être évitées si vous l'aviez préparée de toute façon.