【发布时间】:2019-06-05 12:24:52
【问题描述】:
我想使用身份验证令牌,经过各种搜索,我找到了 JWT 令牌和另一种使用 md5 生成令牌的方法。
出于各种原因我不想使用令牌 JWT 和 md5 在我看来名声不好。
所以我找到了一个方法,但我想听听你的意见:
生成字节串:https://www.php.net/manual/en/function.random-bytes.php
然后我把它转换成十六进制。
最后,我将它与我的用户 id 和 salting 连接起来。
我将此发送到我的应用程序(Android 或 Web),而不是在对我的服务的请求期间我解码接收到的令牌,我将看到隐藏在令牌中的 id 中包含的令牌。 那么是不是靠蛮力找token比较难?
注意 1:我想在未来刷新令牌,但目前它应该无限期发行。
注意 2:我不想只在 php 中使用库或框架。
代码:
$bytes = random_bytes(32);
$part=bin2hex($bytes));
$shortpart=substr($part,0,17);
$id = #userid
$salt=#customsalt
$token=shortpart.$id.$salt;
例子:
$shortpart =f2e4d1f2a2dfedcf5
$id=1
$salt=4d2ze121
$token=f2e4d1f2a2dfedcf514d2ze121
用户或黑客不知道 id 是否隐藏在令牌中。
【问题讨论】:
-
您需要向我们展示执行此操作的代码。根据实际实施和使用情况,即使是推荐的安全措施也可能容易受到攻击。
-
“我不想只在 php 中使用库或框架” - 为什么不呢?在安全性方面,通常建议使用经过良好测试的现有库,而不是编写自己的解决方案。很容易错过一些会使您的应用程序受到攻击的东西。
-
我添加一个代码示例
-
我要一个开放项目的第一个原因,一些库使用限制性许可证。其次,我希望纯php具有应用程序运行所必需的严格
-
这里已经回答了这个问题:stackoverflow.com/questions/1846202/…