Re: Stricter error handling in mcrypt extension
| From: | Ferenc Kovacs | Date: | Sun, 02 Mar 2014 09:42:12 +0000 |
| Subject: | Re: Stricter error handling in mcrypt extension | ||
| References: | 1 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-72896@lists.php.net to get a copy of this message | ||
2014.03.02. 1:13, "Nikita Popov" <nikita.ppv@gmail.com> ezt írta:
>
> Hi internals!
>
> I would like to add a number of additional error checks in
> php_mcrypt_do_crypt - which affects the mcrypt_encrypt, mcrypt_decrypt and
> mcrypt_{BLOCK_CHAINING_MODE} userland functions.
>
> The proposed changes are:
> * Throw a warning and return bool(false) if the IV size is invalid. The
> old behavior was to throw a warning and use a NUL-byte IV.
> * Throw a warning and return bool(false) if no IV was specified, but the
> block chaining mode requires an IV. The old behavior was to throw a
warning
> and use a NUL-byte IV.
> * Throw a warning and return bool(false) if the key size is invalid. The
> old behavior was to **silently** pad the string to the next valid key size
> with NUL bytes or, if the key is too long, to throw a warning and truncate
> it to the maximum valid key size.
>
> An implementation of these changes can be found in the PR
> https://github.com/php/php-src/pull/610.
>
> The reason why I'd like to make the mcrypt input handling stricter is to
> ensure that incorrectly implemented encryption will fail and fail
> violently. With the current lax input checking it is very easy to
> completely compromise confidentiality through simple mistakes - like using
> a password as the encryption key.
>
> Thanks,
> Nikita
>
> PS: I'm running this change by the list because stricter error handling is
> technically a BC break. Of course this change is targeting PHP 5.6 only.
Hi Nikita,
While I think that the overwhelming majority of the voters would support
this change, so an rfc could seem as an overkill, but I still think that it
is better to require an rfc for every BC break.
Which unfortunately would mean that this can't target 5.6.0.
:(