Improve the crypt() builtin #2
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The
crypt()builtin currently uses DES for hashing passwords, which is very insecure.If available and enabled, we now use
crypt_gensalt()to make a usable salt for whatever algorithm the library supplyingcrypt()thinks is strongest.Since this is provided by a fair few newer libcrypt libraries, such as libxcrypt and crypt_blowfish, it's fairly widespread.
Additionally, glibc recently removed its libcrypt implementation, so many distros are now using a more modern libcrypt supplied by a project focused on cryptography, like libxcrypt, making it more likely to be available, and making it necessary to ensure libcrypt is properly found and linked if needed.
In short, this should make it fairly easy to have more secure password hashes, and at least in databases I have, it should just work without any major issues or changes needed to the database code.
If someone wants to explicitly stick with legacy DES hashes only, to keep a database compatible with older versions of the engine,
--disable-crypt-gensaltcan be passed toconfigureto disable the new hash salts.