计算相等的令牌

时间:2014-03-22 15:06:18

标签: javascript php

我想通过令牌验证用户。一个令牌是计算客户端(JavaScript),另一个是计算服务器端(PHP)。如果他们相等,则用户可以访问。

我在这个计算中使用了一些随机变量,当前时间和用户ID。有哪些好方法可以验证用户?我不想通过密码来做。

1 个答案:

答案 0 :(得分:1)

为什么不使用秘密的HMAC,而不是使用“随机”变量并希望它们发生碰撞?我会给出一个类似的例子:

为防止对我构建的网站中的表单进行CSRF攻击,我随机生成一个20字节的字符串并将其存储在$ _SESSION ['formTokens']中。当表单显示给用户时,我将<input type="hidden" name="csrf" value="<?=hash_hmac('sha1', $_SERVER['REMOTE_ADDR'], $_SESSION['formTokens']['thisFormID']);" />添加到表单。

提交表单时,我检查(使用常量时间哈希比较函数)$_POST['csrf']hash_hmac('sha1', $_SERVER['REMOTE_ADDR'], $_SESSION['formTokens']['thisFormID'])具有相同的值。

你可以在这里做类似的事情。