web-dev-qa-db-ja.com

PHP 7.2

PHPのmcryptへの依存関係が非常に重要で重要ないくつかの巨大なレガシーシステムがあります(データベースのデータストレージを含む)。 PHP 7.2(これはすでに正常に機能していました)にアップグレードするときに、このライブラリを維持する方法を見つける必要があります。

私のローカルテスト環境はWindowsです。ライブ環境はCentOSで実行されます。

私が見た答えのいくつかは、復号化してmcryptをopensslに変更することです(復号化するデータがたくさんあるため、現時点では不可能だと思います)。

下位のPHP mcrypt- supportを含むバージョンをダウンロードし、拡張機能をコピーしてphp.iniに追加する方法もあります(フォルダーもわかりません)。

PHP= 5.6にダウングレードすることは、セキュリティの問題のために適切ではありません。

このシナリオで何ができるのでしょうか?

5
Danilo Davanso

基本的に、あなたはすべての可能性について言及していると思いますが、選択肢はありません。 PHP 5.6このアプローチには未来はありません

MCryptは、PHPをアップグレードする主な理由の1つであるPHPから削除されました。セキュリティ。MCryptライブラリはもうメンテナンスされていません。したがって、MCrypt拡張機能をインストールすることも悪い考えです。しかし、それは一時的な解決策になる可能性があります(たとえば、これらの指示に従ってください .io/community/articles/how-to-install-the-php-mcrypt-extension.html )。

唯一の良い解決策は、mcryptから何かに移行することです。 Stackoverflowのこのトピックに関する質問は既にあります(例: McryptからOpenSSL への暗号化ライブラリのアップグレード)。あるいは、暗号化ライブラリを使用することもできます。大量のコード/データを移行するのは苦痛かもしれませんが、これはこの場合の最も未来志向のアプローチです。

9
Blackbam

mcryptオプション/コードに関するコードまたは情報がないことに注意してください。

おそらく、mcryptで使用される非標準のnullパディングの唯一の問題です。ヌルパディングをサポートしない(非標準)別の実装で復号化するには、パディングなしで復号化してから、ヌルパディングを削除します。

mcryptと同じ暗号化も必要な場合は、nullパディングを追加し、パディングなしで暗号化します。

本当に現在の暗号化を移行するか、暗号化にmcrypt互換性がある(またはそうでない)フラグを追加することを検討してください。

0
zaph