簡體   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