Besoin d'une alternative plus petite pour GUID pour DB ID, mais toujours uniques et aléatoires pour les URL

J'ai regardé tous de la place pour cela et je n'arrive pas à obtenir une réponse complète pour cette. Donc, si la réponse existe déjà sur stackoverflow alors je m'excuse à l'avance.

Je veux un unique et ID aléatoire, de sorte que les utilisateurs de mon site web ne peut pas deviner le prochain numéro et juste hop à quelqu'un d'autre information. J'ai l'intention de s'en tenir à une incrémentation de l'ID de la clé primaire, mais aussi de stocker un hasard et de l'IDENTIFIANT unique (sorte de hachage) pour cette ligne dans la base de données et de mettre un index sur elle.

De mes recherches je me rends compte que je tiens à éviter les collisions et j'ai lu quelques mentions de SHA1.

Mes exigences de base sont

  • Quelque chose de plus petit qu'un GUID. (Semble horrible dans l'URL)
  • Doit être unique
  • Éviter les collisions
  • Pas une longue liste de personnages étranges qui sont illisibles.

Un exemple de ce que je recherche serait www.somesite.com/page.aspx?id=AF78FEB

Je ne suis pas sûr si je dois être la mise en œuvre de la présente dans la base de données (je suis à l'aide de SQL Server 2005) ou dans le code (je suis à l'aide de C# ASP.Net)

EDIT:

De tous à la lecture, je l'ai fait je me rends compte que c'est la sécurité par l'obscurité. Je compte bien avoir l'autorisation appropriée et d'authentification pour l'accès aux pages. Je vais utiliser .Net de l'Authentification et de l'autorisation-cadre. Mais une fois une légitime utilisateur a ouvert une session et accéder à un legimate (mais créé dynamiquement la page) rempli avec des liens à des objets qui lui appartiennent. Par exemple, un lien peut être www.site.com/page.aspx?item_id=123. Qu'est-ce que l'arrêt lui en cliquant sur ce lien, puis modifier l'URL ci-dessus pour aller www.site.com/page.aspx?item_id=456 ce qui ne lui appartient PAS? Je sais que certaines technologies Java comme Struts (je me tiens à être corrigé) tout stocker dans la session et en quelque sorte de travailler à partir de ça, mais je n'ai aucune idée de comment c'est fait.

InformationsquelleAutor uriDium | 2009-02-09