Jak i dlaczego warto zablokować WP REST API?
Interfejs do pobierania informacji z WP REST API dostępny pod adresem: twojastrona.pl/wp-json/wp/
Przykładowo listę użytkowników można sprawdzić pod adresem: /wp-json/wp/v2/users
Od wersji 4.7 WordPress domyślnie włącza obsługę REST API.
Co zrobić, żeby wyłączyć dostęp?
// Filters for WP-API version 1.x add_filter( 'json_enabled', '__return_false' ); add_filter( 'json_jsonp_enabled', '__return_false' ); // Filters for WP-API version 2.x add_filter( 'rest_enabled', '__return_false' ); add_filter( 'rest_jsonp_enabled', '__return_false' ); // Remove REST API info from head and headers remove_action( 'xmlrpc_rsd_apis', 'rest_output_rsd' ); remove_action( 'wp_head', 'rest_output_link_wp_head', 10 ); remove_action( 'template_redirect', 'rest_output_link_header', 11 );
Aby udostępnić usługę tylko zalogowanym użytkownikom: function allow_logged_in_rest_access( $access ) { if( ! is_user_logged_in() ) { return new WP_Error( 'rest_cannot_access', __( 'Only authenticated users can access the REST API.', '...' ), array( 'status' => rest_authorization_required_code() ) ); } return $access; } add_filter( 'rest_authentication_errors', 'allow_logged_in_rest_access' );
Aby zablokować w .htaccess RewriteCond %{REQUEST_METHOD} ^(GET|POST|PUT|PATCH|DELETE) [NC] RewriteCond %{REQUEST_URI} ^.*wp-json/wp/ [NC] RewriteRule ^(.*)$ - [F]
Leave a Reply