Why does Laravel only support AES-256-CBC? Modern Laravel uses OpenSSL to provide AES-256-CBC encryption along with a MAC. However, I was under the impression that this is not a particularly secure approach.


Why does Laravel only support AES-256-CBC?


While I'm not using this feature for sensitive data, I'd still like to follow best practices.
I see two reasons:


The addition of good libraries/modes is quite recent (Libsodium is only available since 7.2+ and AES-XXX-GCM with 7.1+).
Encrypted messages in Laravel don't have a version marker that would allow more than one scheme to coexist on a given installation. It mean that a given site must stick with one encryption scheme / key or all the existing encrypted messages will become unreadable. It makes upgrading encryption in Laravel quite hard.


...and since the current scheme (AES-256-CBC + HMAC-256) is fairly competent, Taylor is sticking with it.