php - 使用 php 为 android 创建身份验证令牌
问题描述
我想使用身份验证令牌,经过各种搜索,我找到了 JWT 令牌和另一种使用 md5 生成令牌的方法。
出于各种原因,我不想使用令牌 JWT 和 md5 在我看来名声不好。
所以我找到了一种方法,但我想听听你的意见:
生成字节字符串:https ://www.php.net/manual/en/function.random-bytes.php
然后我将其转换为十六进制。
最后,我将它与我的用户的 id 和 salting 连接起来。
我将它发送到我的应用程序(Android 或 Web),而不是在对我的服务的请求期间我解码接收到的令牌,我将看到隐藏在令牌中的 id 中包含的令牌。那么通过蛮力找到令牌更难吗?
注意1:我想在未来刷新令牌,但目前它应该无限期发行。
注意 2:我不想只在 php.ini 中使用库或框架。
代码 :
$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 是否隐藏在令牌中。
解决方案
经过一些研究,我认为更好的方法是:
$token = bin2hex(openssl_random_pseudo_bytes(32));
并自定义此字符串。
推荐阅读
- ffmpeg - ffmpeg 输出文件#0 在尝试访问 2 个音频流中的 1 个时不包含任何流
- gmail-api - Gmail API 支持 UserID 参数,但如何设置可以访问多个邮箱的 Google 帐户?
- android - 为什么 RecycleView 让我的应用程序在 Fragments 中崩溃?
- kubernetes - 了解 Kubernetes 网络,具有相同 ip 的 pod
- c - 为什么我的计算字符串长度的函数返回负值?
- rest - REST 最佳实践云
- react-native - 有没有办法知道(通过代码)用户是否在应用程序中并立即使用它?
- azure - 无法从我的逻辑应用中获取 Azure Active Directory 组
- java - 在 Ubuntu 命令行上运行 spring 工具套件(Windows 子系统 Linux)
- regex - 正则表达式检查特定字符的字符串