首页 > 解决方案 > 有没有办法散列用户 ID 以在 URI(路径)中使用?

问题描述

Python(特别是 Django)中有没有办法为使用散列用户 ID 的文件构建 URL?

我想使用散列 ID 进行文件身份验证,即比较request.user.id to文件路径的部分。

我研究了 Django 的“make_password”,但它似乎对我的需要有点过分了。我读过,os.urandom但它听起来不像是可以逆转的。

最后,我的目标是保护用户 ID 不成为 URL 的一部分,但允许轻松的文件访问身份验证/权限。

标签: pythondjangosecurity

解决方案


您可能想查看Hashids,尽管名称如此,但它们不是加密哈希,因为它们是可逆的:

Hashids 是一个小型开源库,可以从数字生成短的、唯一的、非连续的 id。

它将诸如 347 之类的数字转换为诸如“yr8”之类的字符串,或将诸如 [27, 986] 之类的数字数组转换为“3kTMd”。

您还可以将这些 id 解码回来。这对于将多个参数捆绑到一个或简单地将它们用作短 UID 很有用。

存在一个库来将 Hashids 字段添加到 Django 的 ORM。


推荐阅读