繁体   English   中英

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

[英]Generate API Client Key and Client Secret with php

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

//Client Key
$key = md5(microtime(true).mt_Rand());


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

如果不是这样,如果有人可以指出我一个更可靠的脚本,我将很高兴。 谢谢

只要采取一些预防措施,使用PHP生成密钥并不是天生不安全的。 虽然您的问题可能会吸引很多基于观点的建议,这些建议可能都是正确的,但我还是建议您提出一些建议

尽可能避免md5。 如今,即使您使用的是随机生成的盐散列,对md5的碰撞攻击也非常简单,可以被认为是微不足道的。 您至少应使用sha1(虽然不如md5那样容易,但它也有些容易碰撞)或sha256。

万一您想远离sha1 / sha256,还有很多选择,尽管按照2018年的标准,sha256作为哈希算法已经足够安全。 但是,我将使用microtime以外的其他参数作为哈希输入参数。 即使您正在加盐,它也是可以预见的。 只是为了确保可预测性的安全,我建议您串联一些额外的内容(例如,microtime.mt_rand.something_else_which_is_also_random)

至于秘密,我建议采取一些更强有力的措施。 从密码学的角度来看,PHP中没有真正的随机性,因此random_bytes可能比乍一看更容易预测和利用。 结合bin2hex只是一个转换而不是一个单向函数的事实,使整个秘密成为一个薄弱环节。 我会使用更长的字符串(32个似乎很弱),并将其与其他内容组合在一起(也许是将等长的随机字符串按位进行XOR)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM