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

Exposer le nom de la table et les noms des champs dans l'URL de la demande

Je n'ai aucun problème à utiliser les mêmes noms (ou très similaires) dans l'URL et la base de données - bien sûr, vous pourriez "exposer" des détails d'implémentation, mais si vous choisissez des noms radicalement différents dans l'URL et la base de données, vous ' re choisir probablement de mauvais noms. Je suis également fan des dénominations cohérentes :la communication avec les codeurs/testeurs/clients devient beaucoup plus difficile si tout le monde appelle tout quelque chose de légèrement différent.

Ce qui me dérange, c'est que vous laissez l'utilisateur exécuter des requêtes arbitraires sur votre base de données. http://.../index.php?table=users&user_id=1 , dire? Ou http://.../index.php?table=users&password=password (pas que vous devriez stocker les mots de passe en clair) ? Ou http://.../index.php?table=users&age=11 ?

Si l'utilisateur connecté à la base de données a les mêmes autorisations que l'utilisateur assis devant le navigateur Web, cela peut avoir du sens. Généralement, ce ne sera pas le cas, vous aurez donc besoin d'une couche qui sait ce que l'utilisateur est et n'est pas autorisé à voir, et cette couche est beaucoup plus facile à écrire correctement en ajoutant une liste blanche.

(Si vous avez mis suffisamment de logique dans les procédures stockées, cela pourrait fonctionner, mais vos procédures stockées coderont en dur les noms de colonne...)