Kako odstraniti javno razkritje uporabnikov preko WP-JSON?
Ranljivost in razkritje podatkov
Napadalec bi lahko potencialno uporabil razkrita uporabniška imena za identifikacijo veljavnih uporabniških računov, kar bi mu lahko pomagalo pri izvajanju ciljanih napadov, kot so “brute-force” napadi, kampanje ribarjenja (phishing campaigns) ali druge zlonamerne dejavnosti. Poleg tega lahko ta ranljivost pripelje do neavtoriziranega dostopa do uporabniških računov, če se kombinira z drugimi vektorji napadov (other attack vectors).
Seznam vseh uporabnikov je na voljo na naslovu https://moja-domena.si/wp-json/wp/v2/users, podatki o določenem uporabniku pa so dostopni na naslovu https://moja-domena.si/wp-json/wp/v2/users/1, kjer cifra 1 predstavlja identifikacijsko številko uporabnika.
Rešitev
Da onemogočite ti dve končni točki, vstavite naslednji del kode v datoteko functions.php vaše teme oziroma uporabite vtičnik Code Snippets, da se pri posodobitvi le-to ne ponastavi:
- Code Snippets (dostop do strani https://wordpress.org/plugins/code-snippets) je enostaven, čist in preprost način za zagon izsekov oz. delov kode na vašem spletnem mestu. Odpravi potrebo po dodajanju prilagojenih izsekov kode v datoteko functions.php vaše teme.
add_filter('rest_endpoints', function($endpoints) {
if (isset($endpoints['/wp/v2/users'])) {
unset($endpoints['/wp/v2/users']);
}
if (isset($endpoints['/wp/v2/users/(?P<id>[\d]+)'])) {
unset($endpoints['/wp/v2/users/(?P<id>[\d]+)']);
}
return($endpoints);
});