What does HackerNews think of password_compat?

Compatibility with the password_* functions that ship with PHP 5.5

Language: PHP

> Same for WordPress.

Not as much - WP favours backwards compatibility (or is it laziness?) even when doing so impacts security.

Another problem is that the environments Wordpress targets are inherently vulnerable - while it's not WP's fault directly, they do nothing to warn people against using them nor outright stop supporting broken, insecure configurations.

> There are multitudes of comments that specifically single out WP in the post's comment thread. Including this very thread that you are on.

I was talking about publicized data breaches in general. But if we specifically talk about CMSes, I'm not sure anything else beats Wordpress and similar PHP-based CMSes of that era when it comes to not just the amount of vulnerabilities, but especially the nature of them - the same, dumb, basic problems resolved in every other language (including modern PHP with a framework such as Laravel) repeated over and over again.

> WHERE is that objective study that compares WordPress with other software in regard to vulnerabilities

Someone posted the following excerpt of the Wordpress codebase: https://github.com/WordPress/WordPress/blob/master/wp-includ... which appears to be some custom attempt at simulating SQL query parameterization instead of using the actual, database-driver-provided function. If this is indeed the purpose of that function and it is indeed used, then I'm not sure there is any valid excuse for this in today's day and age.

Someone else mentioned password hashing still relying on MD5 - if that is actually true, I'm not sure that is excusable either? I haven't done PHP for many years now, but surely even if the native functions aren't available, couldn't they use a "polyfill" such as https://github.com/ircmaxell/password_compat ?

I'm sure there are many other issues but frankly the first one should be enough for any competent developer to run away.

> No it doesnt. Dont make up falsities. PHP executes files how you configure it to.

I was with you until this, but now I think you're arguing in bad faith.

Yes, if you want to be pedantic, PHP and your web server execute files like how you configure them to. In practice, the environment where the vast majority of Wordpress sites are deployed (your typical shared hosting environment) will execute anything that ends with .php and is in the web root.

This is inherently a legacy PHP problem (which WP encourages by supporting it) - no other language that I know of does this by default. If I accidentally store a malicious file in Python, Ruby, Node.js, etc applications, the worst that will happen is that I serve it back. At no point what so ever the server itself will execute that file.

Yet in the PHP environments Wordpress targets, this is a massive issue which means every single feature handling file uploads (both in WP core and any plugins) should anticipate your server's misconfiguration (maybe it's not limited to .php files, but .html files too?) and try to protect against it, eventually failing and then you get yet another Wordpress vulnerability.

v5.5 actually, but there is a userland library to provide the same functionality - https://github.com/ircmaxell/password_compat
If you're like me and you don't always have the luxury of working on up to date PHP installs, this is the suggested compatibility library which will make the code here run[0], do you have any opinions on it?

[0]https://github.com/ircmaxell/password_compat

Yeah. I think defuse wrote that page 3-4 years ago and hasn't really maintained it since then.

For PHP Devs, these are the two best options available:

* https://github.com/ircmaxell/password_compat

* https://github.com/DomBlack/php-scrypt

This is bang on. PHP devs need to stop rolling their own hashing methods.

The compatibility library to use for PHP <5.5 is Antony Ferrara's password_compat: https://github.com/ircmaxell/password_compat.

There's also a library for PHP >= 5.3.7 that provides the same API if PHP 5.5 isn't an option yet.

https://github.com/ircmaxell/password_compat

Written by Anthony Ferrara, the same guy behind the `password_*` API in PHP 5.5

The php 5.5 functions are really nice. Fortunately they can be shimmed into versions 5.3.7+. See:

https://github.com/ircmaxell/password_compat

There is a PHP 5.3.7+ implementation of the password API here: https://github.com/ircmaxell/password_compat