haiju's 開発メモ

開発に必要な情報を自分用にメモ

CodeIgniter3.xでパスワードをハッシュ化するのに、EncryptionクラスとSecurity helperで見解が違ってた

結論として、password_hash()を使うべきと主張している、Encryption

クラスの注意書きの方が正しい気がする。

version 4ではSecurity helperのdo_hash()メソッドは廃止されているが、

version 3にはあって、パスワードをSHA1(default)やMD5等、PHP

hash_algos()に定義されているハッシュアルゴリズムの一覧にある

ものが使えるとあるのだが、そこにはパスワードのハッシュ化に

使われる代表的なアルゴリズムが1つもないんだけどなー(Φω|

そもそも、「ハッシュ化」と言っても、ファイルの同一性を確認する

のか?パスワード保存のために使うのか?暗号通貨の取引データの保存

に使うのかでアルゴリズムは異なると思っているんだが。

しかも、do_hash()は4では廃止されるので、今後はhash()を使うように

って注意書きがあるの謎すぎる。どういうこと?って思う。

(ex)CodeIgniter3 Security helperのdo_helper()の注意書き

f:id:haiju:20191125112841p:plain

↑ パスワード保存のためのハッシュアルゴリズムがない時点で、安全って

言い切れんのかよ?って思う。

(ex)CodeIgniter3 Encryptionクラスの注意書き

f:id:haiju:20191125112855p:plain

(ex)CodeIgniter4 Encryption Serviceの注意書き

f:id:haiju:20191125112908p:plain

[参考サイト]

codeigniter.jp

codeigniter.jp

codeigniter4.github.io

https://www.php.net/password

https://www.php.net/function.hash_algos

qiita.com

auth0.com

blog.ohgaki.net

ischool.co.jp

www.websec-room.com

www.websec-room.com