首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >用php生成API客户端密钥和客户端密钥

用php生成API客户端密钥和客户端密钥
EN

Stack Overflow用户
提问于 2018-08-28 08:03:44
回答 1查看 273关注 0票数 0

我正在为Joomla创建一个自定义的支付处理组件。这个组件有一个API,允许用户处理来自其他来源的付款,如Woocomerce,Wix等。我想知道是否它是安全的生成“客户密钥”和“客户秘密”与我自己编写的PHP脚本。

代码语言:javascript
复制
//Client Key
$key = md5(microtime(true).mt_Rand());


//Client Secret
$secret = bin2hex(random_bytes(32));

如果没有,如果有人能给我一个更可靠的脚本,我会很高兴的。谢谢

EN

回答 1

Stack Overflow用户

发布于 2018-08-28 09:26:08

只要采取一些预防措施,使用PHP生成密钥本身并不是不安全的。虽然你的问题可能会吸引许多基于意见的建议,这些建议可能都是正确的,但我还是建议一些建议

应尽可能避免使用md5。如今,md5的冲突攻击非常简单,即使您使用的是随机加盐哈希生成,也可以认为是微不足道的。您至少应该使用sha1 (虽然不像md5那么简单,但也很容易发生冲突)或sha256。

如果你也想远离sha1/sha256,有很多替代方案,尽管按照2018年的标准,sha256作为散列算法是足够安全的。但是,我会使用微时间以外的其他参数作为散列输入参数。即使你在加盐,它也是可以预测的。出于可预测性的安全考虑,我建议连接一些额外的东西(例如,microtime.mt_rand.something_else_which_is_also_random)

至于其中的秘密,我建议用更健壮的方法。从密码学的角度来看,PHP中没有真正的随机性,所以random_bytes可能比乍一看更可预测,更容易被利用。这一点,再加上bin2hex只是一个转换而不是单向函数的事实,使得整个秘密成为一个薄弱环节。我会使用一个更长的字符串(32看起来很弱),并将它与其他东西组合在一起(可能是位XOR与一个长度相等的随机字符串)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52048393

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档