2009-09-30 2 views
2

Est-il recommandé de créer une colonne (clé unique) qui est un hachage. Quand les gens voient mon URL, il est actuellement comme ceci:J'ai une base de données simple de contenu. Dois-je hacher le "id" de sorte que les gens ne regardent pas dans l'URL?

url.com/?id=2134

Mais, les gens peuvent regarder par-dessus cela et des données-moi tout le contenu, non? Est-ce qu'il est RECOMMANDÉ de faire 1 pas de plus pour faire cela à travers le hachage?

url.com?id=3fjsdFNHDNSL

Merci!

+0

Doit être marqué de nouveau avec hachage. –

+0

Un peu plus d'informations sur l'utilisation pourraient être utiles. La sécurité est très difficile à atteindre, donc la vraie question est pourquoi ne voulez-vous pas que quelqu'un puisse naviguer librement dans votre contenu? S'il y a une raison de sécurité, le hachage N'EST PAS suffisant, et vous voudrez peut-être l'authentification ... –

Répondre

4

La première étape, et la plus importante, consiste à utiliser une certaine forme de sécurité basée sur les rôles pour garantir qu'aucun utilisateur ne peut voir les données qu'il n'est pas supposé voir. Par exemple, si un utilisateur ne voit que ses propres informations, vous devez vérifier que l'identifiant appartient à l'utilisateur connecté avant de l'afficher. Comme deuxième niveau de protection, ce n'est pas une mauvaise idée d'avoir une clé unique qui ne vous laisse pas prédire d'autres clés (un hachage, comme vous le suggérez, ou un UUID). Cependant, cela signifie toujours que, par exemple, un utilisateur malveillant qui a obtenu l'URL de quelqu'un d'autre (par exemple en sniffant un réseau, en lisant un fichier journal, en visualisant l'historique dans le navigateur de quelqu'un) pourrait voir les informations de cet utilisateur. Vous avez besoin d'une authentification et d'une autorisation, et pas simplement d'une dissimulation des identifiants.

+1

Commentaire supplémentaire: les hachages sont complètement prévisibles avec un texte connu, vous laissant toujours ouvert aux attaques de style dictionnaire - en appliquant un sel aléatoire au hash aide - bien que, selon la façon dont vous le faites, vous pouvez toujours vous permettre de rejouer des attaques. Tout cela pour souligner que vous devez absolument * mettre en œuvre un mécanisme de sécurité basé sur les rôles. – Nathan

0

Cela dépend de votre situation, mais je pense que si vous pensez avoir besoin de hachage, vous avez besoin de hachage. Si quelqu'un pouvait la mine de données, disons, itérer:

 
... 
url.com?id=2134 
url.com?id=2135 
url.com?id=2136 
... 

Ensuite, en utilisant un hachage pour l'ID est nécessaire pour éviter cela, car il sera beaucoup plus difficile de comprendre la suivante. Gardez à l'esprit, cependant, que vous ne voulez pas rendre le hachage trop évident, de sorte qu'un attaquant déterminé pourrait facilement le comprendre, par ex. juste en prenant le MD5 de 2134 ou quel que soit le nombre que vous aviez.

0

Eh bien, le problème ici est qu'un vrai Hash est techniquement à sens unique. Donc, si vous hachez les données, vous ne pourrez pas les récupérer du côté réception. Sans savoir quelle technologie vous utilisez pour créer votre page Web, il est difficile de faire des suggestions concrètes, mais si vous devez avoir des informations sensibles dans votre chaîne de requête, je vous recommande d'utiliser au moins un algorithme de chiffrement symétrique simplement lire les valeurs et inverser les choses d'ingénierie.

Bien sûr, si vous avez l'option - il est probablement préférable de ne pas avoir cette information dans la chaîne de requête du tout.

+0

Le hachage est un moyen, mais dans ce cas, il est seulement utilisé comme une technique d'obfuscation pour émuler un global-id avec peut-être plus de hasard, aussi longtemps que le hash est stocké dans la base de données besoin de cryptage. –

+0

Ah ok - j'ai mal compris la question. – Streklin

Questions connexes