如何为网站设计用户id?

2024-09-28 20:43:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我在一个玩具网站上工作,我实现了一个向上投票按钮,onclick属性如下:

Dajaxice.debater.upvote(
    upvote_js,//Don't worry about this, it's just dealing with AJAX
    {
         'username' : 'bob',//bob is the user being upvoted by
    }
)

你看到的问题是网页是直接使用用户名,这是糟糕的设计,因为用户可以很容易地打开一个chrome控制台,更改用户名和假请求upvote说爱丽丝而不是鲍勃。我调查了几个网站,发现他们用一个长字符串来表示用户。我想知道这通常是如何实现的?在更一般的形式下,我正在寻找一种算法:

  1. 为每个用户提供唯一的id
  2. 即使将这个id提供给用户或任何第三方,如果不使用长时间或大量内存来计算(反转散列),他们也不知道这个id代表哪个用户。你知道吗

Tags: 用户id属性网站js投票按钮用户名
2条回答

您可以生成字符串的加密形式(根据定义,哈希是不可逆的)。你知道吗

这样做的缺点是,如果有人有你所有用户的列表,他们就可以计算出你使用的算法并破解你的加密。你知道吗

进行可逆加密的常见方法是使用^{}

>>> import base64
>>> secret = base64.b64encode('bob')
>>> secret
'Ym9i'
>>> print base64.b64decode('Ym9i')
bob

听起来更像是设计问题,而不是编码问题。你知道吗

即使您以某种方式对用户名进行哈希处理,也总会有一种方法通过在某个网页的某个位置找到该哈希的实例来获取哈希。你知道吗

您可以实现这样一个系统,即每个用户只能向另一个用户投票一次,但是没有什么可以阻止某人创建多个帐户以绕过此限制。你知道吗

一种常见的解决方案是跟踪哪些IP地址对某个特定用户进行了升级投票,并禁止同一IP地址对同一用户进行多次升级投票。你知道吗

相关问题 更多 >