28 votes

Évitez d'exposer les clés primaires dans le code source d'une application web.

Je rencontre souvent des applications web qui exposent les clés primaires de la base de données internes à travers des formulaires comme des cases à cocher. Et parfois je vois du javascript correspondant à une valeur magique de type int ou guid qui change la logique.

Est-ce une bonne pratique d'éviter de divulguer tous les identifiants internes des lignes de votre application web pour empêcher les externes de comprendre trop de votre système et éventuellement l'exploiter? Si oui, quelle est la meilleure façon de résoudre ce problème?

Devriez-vous exposer une autre valeur à l'application web qui peut être traduite en clé primaire?

Merci

Édition

Dans un monde parfait, votre application serait 100% sécurisée, donc il ne serait pas grave d'obscurcir les choses. De toute évidence, ce n'est pas le cas, donc devrions-nous opter pour la prudence et ne pas exposer ces informations?

Certains ont souligné que Stackoverflow expose probablement une clé dans l'URL, ce qui est probablement acceptable. Cependant, les considérations sont-elles différentes pour les applications d'entreprise?

0voto

Walter Mitty Points 8726

Une clé primaire n'est pas la même chose qu'une clé de substitution ou une clé interne, bien qu'il y ait un certain chevauchement. L'opposé d'une clé interne est une clé naturelle. Il y a de nombreuses occasions où une clé naturelle est utilisée comme clé primaire. En général, il n'y a pas de raison de cacher une clé naturelle, sauf en cas de problèmes de confidentialité.

Votre vraie question est, je pense, de savoir si les clés internes doivent être exposées aux utilisateurs. La réponse est "cela dépend". Pour la plupart des communautés d'utilisateurs, exposer la clé interne entraînera son utilisation comme une clé naturelle. Cela peut, et en général, entraîne une certaine confusion lorsque la correspondance un-à-un entre la clé interne et le sujet de la rangée de tableau est rompue.

Cette rupture ne peut se produire qu'en raison d'une mauvaise gestion des données. La plupart du temps, cependant, vous devez prévoir qu'une certaine mauvaise gestion des données se produira dans le monde réel. Vous ne planifieriez pas un système d'approvisionnement en eau qui tombe en panne chaque fois qu'il y a une mauvaise gestion de l'eau. Vous ne planifiez pas un système d'information qui tombe en panne chaque fois qu'il y a une mauvaise gestion des données.

Cela dit, la plupart des concepteurs de bases de données travaillent de nos jours pour des éditeurs de logiciels et ne voient pas les problèmes causés par une mauvaise gestion des données par les utilisateurs de leurs produits.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X