Зачем позволять переопределять важнейшие подключаемые функции wp_verify_nonce и wp_create_nonce?

К функциям в / /wp-includes/pluggable.php относятся функции wp_verify_nonce и wp_create_nonce . Обе функции очень важны для защиты от CSRF-атак. Тем не менее, легко переопределить эти функции в плагине, чтобы все nonces были приняты как действительные.

 if( ! function_exists('wp_verify_nonce') ) { function wp_verify_nonce($nonce, $action = -1) { return 1; } } 

Я протестировал это, и действительно, защита CSRF теперь отключена по всему сайту. По какой причине эти функции помещаются в файл pluggable.php если риски безопасности настолько очевидны?

В функции с подключаемым модулем нет риска для безопасности: если кто-то устанавливает плагин, который снижает безопасность, это его / ее собственная ошибка. С другой стороны, вы можете переопределить функции, чтобы сделать nonce более уникальным или изменить свой формат.

В пользовательской функции wp_verify_nonce() вы можете использовать необязательный третий параметр или изменить время истечения срока действия.

В настоящее время подключаемые функции больше не вводятся. Их трудно отлаживать, и вы можете сделать то же самое с фильтрами. И тогда также проблема, что вы никогда не можете быть уверены, что ни один другой плагин не переопределит подключаемую функцию (снова) после того, как вы ее переопределите.