J'ai un modèle Django qui ressemble à ceci:Obfuscated Django URL pour les objets modèle
class Person(models.Model):
name = models.CharField(max_length=32)
place = models.ForeignKey(Place, related_name='people')
approved = models.BooleanField()
objects = PersonManager()
@models.permalink
def get_absolute_url(self):
return('deal_details',(), {
'person_slug': slugify(self.name),
})
Comme vous pouvez le voir, j'ai déjà une URL absolue pour l'objet. Cependant, je veux créer une URL difficile à deviner pour suivre le processus d'approbation de l'objet. Quelqu'un at-il fait quelque chose de similaire et/ou avez-vous des suggestions sur la façon dont je devrais procéder?
Ma première pensée était la création d'un champ de modèle comme obfuscated_key
qui est généré de manière aléatoire via le save
function of the model. L'URL ressemblerait alors à /people/status/<id>/<obfuscated_key>/
. Mais peut-être y a-t-il une meilleure façon de s'y prendre?
Soit vous soucier de la sécurité dans ce cas et devrait utilisez des connexions réelles, ou vous ne pouvez pas et pouvez passer l'étape d'obscurcissement. L'un ou l'autre chemin est supérieur à la sécurité par l'obscurité. Si vous voulez vraiment prétendre que c'est utile, vous pouvez utiliser un hachage de la chose que vous essayez de cacher. – nmichaels
@Nathon: Contournement de l'attitude --- "vouloir faire semblant que c'est utile" semble augmentative et prétentieuse pour moi --- Je crois que vous faites un bon point. Merci sincèrement. Infiniment reconnaissant. Ce type d'obfuscation est généralement utilisé pour les pages de courte durée de vie telles que les réinitialisations de mot de passe. Peut-être devrais-je repenser si cela correspond à mon objectif. Appréciez votre contribution. –
@Nathon: Quelle est la différence entre un hash aléatoire et login + mot de passe? Si quelqu'un devine ou intercepte l'un d'entre eux, vous avez terminé de toute façon. –