Est-ce un risque pour la sécurité que de montrer à l'utilisateur l'identifiant réel, incrémenté automatiquement par la base de données ? Pouvez-vous donner des exemples pratiques de ce que les gens peuvent faire de dangereux avec cela ?
Réponses
Trop de publicités?Non, il est utilisé dans de nombreux contextes.
Si votre site web est vulnérable d'une autre manière, par exemple par injection SQL ou XSS, ils peuvent utiliser l'identifiant pour faire quelque chose de nuisible. Mais jamais avec l'identifiant seul.
En regardant votre profil ici sur SO, votre identifiant est le suivant 243414
Je ne vois pas pourquoi le fait d'exposer l'identifiant de la ligne à l'utilisateur est intrinsèquement peu sûr. Pratiquement tous les frameworks web le font à un moment ou à un autre.
L'utilisation d'un numéro d'identification entier incrémentiel permet d'obtenir des informations sur les données sous-jacentes. Le plus important est qu'ils sont généralement séquentiels, de sorte qu'un attaquant potentiel peut prédire les identifiants qui seront probablement valides. Cependant, si vous permettez à un utilisateur de demander des données à votre application pour un identifiant qu'il n'a peut-être pas le droit de voir, alors il y a probablement des problèmes de sécurité plus importants dans votre application. Si vous restreignez correctement l'accès, ou si l'accès aux données d'enregistrement n'a pas besoin d'être restreint, l'exposition de l'identifiant ne pose pas beaucoup de risques (voire aucun).
Il peut parfois s'agir d'une tragédie
Disons que j'ai un profil sur votre application et que j'ai mes photos sur ce profil. Et lorsque je supprime l'une d'entre elles, le lien est le suivant
http://www.yourapp.com/myprofile/pictures/delete_pic.php?id=5
et voici ma photo imaginez que la photo 19 n'est pas la mienne
http://www.yourapp.com/myprofile/pictures/delete_pic.php?id=19
Ici, je vais supprimer la photo d'un autre utilisateur Si vous avez besoin de montrer ces identifiants à l'utilisateur, cryptez-les à l'affichage et décryptez-les à l'utilisation. vous pouvez utiliser
base64_encode() & base64_decode()
mais c'est très simple et peut être obtenu vous pouvez faire votre propre algorithme ou faire quelque chose pour générer différentes sorties à partir de base64 comme
base64_encode($id+7); or loops