Saltar al contenido

Deshabilitar de forma segura la API REST de WP

Solución:

De la pregunta original del autor, elegí la opción 2 que provino de las recomendaciones oficiales de wordpress (https://developer.wordpress.org/rest-api/using-the-rest-api/frently-asked-questions/#can-i -deshabilitar-el-resto-api). Así que solo ingrese su functions.php para permitir que solo los usuarios que hayan iniciado sesión usen el resto de la API:

add_filter( 'rest_authentication_errors', function( $result ) {
    if ( ! empty( $result ) ) {
        return $result;
    }
    if ( ! is_user_logged_in() ) {
        return new WP_Error( 'rest_not_logged_in', 'You are not currently logged in.', array( 'status' => 401 ) );
    }
    return $result;
});

Puede deshabilitarlo para solicitudes que no sean localhost:

function restrict_rest_api_to_localhost() {
    $whitelist = [ '127.0.0.1', "::1" ];

    if( ! in_array($_SERVER['REMOTE_ADDR'], $whitelist ) ){
        die( 'REST API is disabled.' );
    }
}
add_action( 'rest_api_init', 'restrict_rest_api_to_localhost', 0 );

Deshabilitar la API REST no fue una mala idea, después de todo. ¡De hecho, abrió un gran agujero en todos los sitios web!

En wordpress 4.4 había una forma

Aquí, he encontrado una posible solución con .htaccess pero debe probarse cuidadosamente en combinación con cualquier otra cosa que se encuentre en su .htaccess archivo (por ejemplo, reglas de pretty-url agregadas por el propio wordpress):

# WP REST API BLOCK JSON REQUESTS 
# Block/Forbid Requests to: /wp-json/wp/
# WP REST API REQUEST METHODS: GET, POST, PUT, PATCH, DELETE
RewriteCond %{REQUEST_METHOD} ^(GET|POST|PUT|PATCH|DELETE) [NC]
RewriteCond %{REQUEST_URI} ^.*wp-json/wp/ [NC]
RewriteRule ^(.*)$ - [F]

Un método muy drástico, es también tener un 404.html página web en su raíz y luego agregue esta línea:

# WP REST API BLOCK JSON REQUESTS 
# Redirect to a 404.html (you may want to add a 404 header!) 
RewriteRule ^wp-json.*$ 404.html

Tenga en cuenta que, a menos que utilice una página estática, es decir, no involucrado con wordpress funciones, si desea devolver un 404 error con una página de error apropiada, este es un tema completamente separado, con muchos problemas cuando Wordpress está involucrado

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *