WordPress build repository browser


Ignore:
Timestamp:
11/10/2026 04:00:02 PM (9 hours ago)
Author:
whyisjake
Message:

Security: Make the Secrets API extension points abstract classes.

WP_Secrets_Provider, WP_Secrets_Store and WP_Secrets_Keyring were interfaces. Once they ship, adding a method to one would be a fatal error in every secrets.php drop-in that implements it, so they could never change. As abstract classes, a later release can add a method with a default implementation and existing drop-ins keep working.

The method signatures are unchanged. The three files are renamed from interface-wp-secrets-*.php to class-wp-secrets-*.php, and the default and fail-closed implementations now extend the classes.

A drop-in written against the interfaces must change implements to extends. Until it does, loading it is a fatal error.

Follow-up to r64337, r65375.

Props ericmann, jorbin.
See #66187.

Built from ​https://develop.svn.wordpress.org/trunk@65390

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-settings.php

    r63881 r64529  
    325325require ABSPATH . WPINC . '/secrets/class-wp-secret-version.php';
    326326require ABSPATH . WPINC . '/secrets/class-wp-secret.php';
    327 require ABSPATH . WPINC . '/secrets/interface-wp-secrets-provider.php';
    328 require ABSPATH . WPINC . '/secrets/interface-wp-secrets-keyring.php';
    329 require ABSPATH . WPINC . '/secrets/interface-wp-secrets-store.php';
     327require ABSPATH . WPINC . '/secrets/class-wp-secrets-provider.php';
     328require ABSPATH . WPINC . '/secrets/class-wp-secrets-keyring.php';
     329require ABSPATH . WPINC . '/secrets/class-wp-secrets-store.php';
    330330require ABSPATH . WPINC . '/secrets/class-wp-secrets-config-key-provider.php';
    331331require ABSPATH . WPINC . '/secrets/class-wp-secrets-broken-keyring.php';
Note: See TracChangeset for help on using the changeset viewer.