我在一个玩具网站上工作,我实现了一个向上投票按钮,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说爱丽丝而不是鲍勃。我调查了几个网站,发现他们用一个长字符串来表示用户。我想知道这通常是如何实现的?在更一般的形式下,我正在寻找一种算法:
您可以生成字符串的加密形式(根据定义,哈希是不可逆的)。你知道吗
这样做的缺点是,如果有人有你所有用户的列表,他们就可以计算出你使用的算法并破解你的加密。你知道吗
进行可逆加密的常见方法是使用^{} :
听起来更像是设计问题,而不是编码问题。你知道吗
即使您以某种方式对用户名进行哈希处理,也总会有一种方法通过在某个网页的某个位置找到该哈希的实例来获取哈希。你知道吗
您可以实现这样一个系统,即每个用户只能向另一个用户投票一次,但是没有什么可以阻止某人创建多个帐户以绕过此限制。你知道吗
一种常见的解决方案是跟踪哪些IP地址对某个特定用户进行了升级投票,并禁止同一IP地址对同一用户进行多次升级投票。你知道吗
相关问题 更多 >
编程相关推荐