WordPress: Απενεργοποιήστε το REST API

Η πιο πρόσφατη έκδοση του WordPress έρχεται με νέες στο API που μπορούν να αξιοποιήσουν , , υπηρεσίες, ή το ίδιο το WordPress Core.

Πολλές φορές όμως ορισμένα από τα νέα χαρακτηριστικά που προσθέτουν οι προγραμματιστές της Automattic δεν χρησιμοποιούνται από όλους τους διαχειριστές της δημοφιλής πλατφόρμας blogging. Για παράδειγμα στο SecNews δεν χρησιμοποιούμε Emojis και το XML-RPC.

Η νέα λειτουργικότητα REST API, για παράδειγμα, μπορεί να χρησιμοποιηθεί από οποιονδήποτε που υπάρχει στη λίστα των χρηστών του WordPress.wordpress

Αυτό από μόνο του δεν είναι αρκετό για να δώσει πρόσβαση σε λειτουργίες του site, αλλά δίνει την δυνατότητα σε κάποιον κακόβουλο χρήστη να ανακαλύψει όλα τα ονόματα χρηστών και με επιθέσεις force να προσπαθήσει να μαντέψει τους κωδικούς πρόσβασης που χρησιμοποιούν. Φυσικά μπορεί να χρησιμοποιήσει και social engineering για να συλλέξει περισσότερα στοιχεία.

Θα πρέπει να αναφέρουμε ότι το νέο API δεν εκθέτει τίποτα περισσότερο από τα ονόματα των χρηστών που έτσι κι αλλιώς είναι διαθέσιμα ήδη κάπου αλλού στην ιστοσελίδα. Απλά τα εμφανίζει μαζεμένη τη λίστα όλων των λογαριασμών των χρηστών του WordPress.

Για να δείτε όλους τους λογαριασμούς χρηστών σε κάθε site που τρέχει WordPress 4.7 θα πρέπει να πάτε στην διεύθυνση:

http://domain_name/wp-json/wp/v2/users

  Έξι τρόποι για να μειώσετε την χρήση μνήμης στο Chrome

Ας δούμε τώρα πως μπορείτε να αποκλήσετε την πρόσβαση σε αυτές τις πληροφορίες. Μπορείτε να το κάνετε με την εγκατάσταση ενός ή προσθέτοντας κώδικα στο functions.php που βρίσκεται στον φάκελο που περιέχει το που χρησιμοποιείτε.

Το plugin ονομάζεται Disable REST API και όπως λέει και το όνομά του θα απενεργοποιήσει το REST API εμφανίζοντας ένα μήνυμα “Μη εξουσιοδοτημένη πρόσβαση” σε ανώνυμες αιτήσεις που ζητούν δεδομένα από το REST API.

Ας δούμε και τον κώδικα που μπορείτε να προσθέσετε στο functions.php:

//*Disable REST API
$current_WP_version = get_bloginfo('version');

if ( version_compare( $current_WP_version, '4.7', '>=' ) ) {
    Force_Auth_Error();
} else {
    Disable_Via_Filters();
}

function Force_Auth_Error() {
    add_filter( 'rest_authentication_errors', 'only_allow_logged_in_rest_access' );
}

function Disable_Via_Filters() {
    
	// 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 );
	
}

function only_allow_logged_in_rest_access( $access ) {

	if( ! is_user_logged_in() ) {
        return new WP_Error( 'rest_cannot_access', __( 'REST API is NOT for YOU! Sorry pal.', 'disable-json-api' ), array( 'status' => rest_authorization_required_code() ) );
    }

    return $access;
	
}

Written by giorgos

Ο Γιώργος ακόμα αναρωτιέται τι κάνει εδώ....

Αφήστε μια απάντηση

Η ηλ. διεύθυνση σας δεν δημοσιεύεται. Τα υποχρεωτικά πεδία σημειώνονται με *

Το μήνυμα σας δεν θα δημοσιευτεί εάν:
1. Περιέχει υβριστικά, συκοφαντικά, ρατσιστικά, προσβλητικά ή ανάρμοστα σχόλια.
2. Προκαλεί βλάβη σε ανηλίκους.
3. Παρενοχλεί την ιδιωτική ζωή και τα ατομικά και κοινωνικά δικαιώματα άλλων χρηστών.
4. Διαφημίζει προϊόντα ή υπηρεσίες ή διαδικτυακούς τόπους .
5. Περιέχει προσωπικές πληροφορίες (διεύθυνση, τηλέφωνο κλπ).