Est-il sûr de mettre mes identifiants de modèle dans mes formulaires?

Je me rappelle avoir vu quelqu'un dire quelque chose dans certains commentaires quelque part qu'il n'est pas très sûr d'exposer l'identifiant d'un enregistrement de modèle à une page Web. J'ai essayé de le contourner mais je n'ai trouvé aucune documentation spécifique sur les goûts.

Est-ce que quelqu'un sait pourquoi cela est et si oui ou non il devrait être évité? Aussi comment cela pourrait-il être évité?

3

2 Réponses

La seule chose qu'un pirate peut faire avec un ID est de le rechercher dans votre base de données, et s'il peut le faire, vous êtes déjà arrosé de toute façon. C'est pourquoi ces identifiants sont appelés «fictifs», car ils ne se rapportent à rien d'autre dans la réalité, comme un numéro de sécurité sociale.

Parfois vous devriez, et parfois vous ne devriez pas, mettre un identifiant dans un URI - http://example.com/myController/42 . Si vous faites cela, sécurisez votre page afin que les utilisateurs non autorisés ne puissent pas changer le numéro de manière triviale et voir quels enregistrements ils peuvent trouver. Mais vous avez besoin de cette sécurité quand même, même si vous utilisez un "slug" pour trouver des disques, parce que les utilisateurs peuvent fouiller dans la recherche de limaces différentes. La principale raison de ne pas utiliser/42 est que les URI font partie de votre enveloppe d'utilisabilité, et qu'ils devraient être alphabétisés et conviviaux.

And I put database IDs inside HTML IDs all the time, to make them unique, such as <input type="text" name="username" id="username_42" />. That's still just as secure.

3
ajouté
que voulez-vous dire par une limace?
ajouté l'auteur TopGunCoder, source
J'aime vraiment ces exemples en utilisant cette page! Merci pour l'aide!
ajouté l'auteur TopGunCoder, source
Une "limace" signifiait autrefois une rangée de caractères, moulée en plomb. Les imprimeurs empilent des limaces pour former une colonne, pour assembler un journal. Aujourd'hui, un "slug" signifie une "chaîne simplifiée courte", où "Top Gun Coder" pourrait être battu comme "top-gun-coder". L'URI sur cette page a à la fois un numéro d'enregistrement, /20151390/, et un slug: est-ce-safe-to-put-my-model-ids ...
ajouté l'auteur Phlip, source

Ce n'est pas. Votre identifiant d'utilisateur est sur le lien à votre nom ici à cette question et l'identifiant de la question est juste là dans l'URL. La seule chose qui n'est pas sûre, c'est si vous autorisez les personnes qui connaissent les ID mais qui n'ont pas accès aux choses que vous ne voulez pas qu'elles fassent.

La sécurité est intégrée dans votre application, pas si vous affichez les ID de vos modèles ou non.

2
ajouté