【发布时间】:2015-04-02 15:15:53
【问题描述】:
我发现网络安全是一个非常有趣的主题,我正在尝试学习如何制作 API 和 RESTful Web 服务。我正在阅读this answer,只是对 Way-2 中描述的过程有一些疑问。我了解 Way-2 的要点,但我从第 4 步开始有疑问。
首先让我们描述一下令牌变量。
$token = '123';
$tokenHashed = 'abc';
$tokenEncrypted = 'xyz';
在第 4 步,我们已经验证了用户,现在是时候创建一个令牌并将其与数据库中的该用户相关联,并将其发送给客户端。以下是我对该过程的疑问:
- 我们存储在数据库中的令牌,是“hashed(abc)”、“encrypted(xyz)”还是“neither(123)”?
- 当我们将其发送给客户端时,我们发送的是“hashed(abc)”、“encrypted(xyz)”还是“neither(123)”?
- 此令牌存储在客户端计算机的什么位置?我正在使用 PHP,所以它会在 $['SESSION'] 或 $['COOKIE'] 变量中吗?有关系吗?哪一个?为什么?
我认为这涵盖了第 4 步下的所有内容,所以让我们继续第 5 步。关于第 5 步,我担心的一件事是它说:“调用者然后发送此身份验证令牌......”我读过你从不传输令牌,所以这里还有一些问题(假设客户端以任何方式存储令牌,回答上述 2 状态):
-
客户端发送令牌“hashed(abc)”、“encrypted(xyz)”还是“neither(123)”?
如果他们只是将它发回我们发送给他们的方式,那有什么意义呢?如果有人以我们发送的任何形式劫持令牌,它不总是与我们存储它的方式相匹配吗?例如,我向 USER X 发送一个随机散列字符串 (abc)。用户 Y 拦截并发送给我(abc)。我的数据库显示“abc”,安全失败。
随着答案的出现,我可能会继续开发/添加问题。感谢您的帮助!
【问题讨论】:
标签: php rest authentication encryption restful-authentication