PHP Profi

Remi о libmcrypt и php-mcrypt Перевод

php mcrypt

Я не могу сосчитать, сколько раз слышал, что использование той или иной библиотеки или расширения PHP - ужасная ошибка. Настало время рассказать об этом.

libmcrypt - это мертвый проект, не развиваемый 8 лет, последняя версия 2.5.8 вышла в феврале 2007 года! И, несмотря на множество багрепортов, все равно никакой активности.

Криптография - важная часть безопасности. Вспомните, сколько проблем было обнаружено и исправлено в различных программах. Существует постоянная необходимость улучшать стандарты безопасности и выбрасывать устаревшие алгоритмы, так как мы можем продолжать использовать не развивающийся 8 лет софт?

Альтернативные, активно развиваемые библиотеки:

  • openssl
  • nss (Network Security Service)
  • ...

Существующие решения для PHP:

  • crypt-функция - единый способ хеширования
  • openssl расширение
  • password hashing функции начиная с PHPH 5.5 или их реализация на чистом PHP - password_compat
  • phpseclib - реализация на чистом PHP

RFC предлагал выбросить расширение mcrypt из PHP 7, но, к нашему стыду, голосование провалилось (15 - 18), так что пока остается.

Курица и яйцо: расширение используется, потому что оно есть и останется на месте, так как его используют множество проектов.

Нам действительно необходимо распространить информацию об этой проблеме, и мы довольно давно занимаемся этим в Fedora. Большинство проектов понимает суть проблемы и согласны переключиться на более безопасные альтернативы, несколько примеров:

  • phpMyAdmin полагается на phpseclib.
  • roundcubemail переключился на openssl по умолчанию, смотри rcube.php
  • CakePHP осознает проблему, смотри #5440, и PR #5496, скоро передут на openssl в версии 3.0
  • Laravel тоже в курсе, смотри #9020, и PR #9041 сделают тоже самое в версии 5.1
  • и т.д.

Некоторые другие фреймворки все еще предоставляют обертку для mcrypt (ex Zend\Crypt\Symmetric\MCrypt, issue #3), но снова встает проблема курицы и яйца с приложениями, полагающимися на функции mcrypt.

Это объясняет, почему некторые enterprise-дистрибутивы, такие как RHEL, не поставляют libmcrypt или php-mcrypt. Возможно, мы должны обсудить с другими Linux-дистрибутивами (Debian, Fedora) возможность перестать поставлять эту ужасную библиотеку.

Вы используете mcrypt? Вы понимаете, что ДОЛЖНЫ незамедлительно переключиться с нее? Или, по крайней мере, рассказать о проблеме своему поставщику софта.

Если вас заинтересовала тема, поднятая в этой статье, обсуждаем в наших группах Facebook, ВКонтакте, Google+ mcrypt и альтернативы !

2015-07-24 ddelay Поделиться: оригинал