👤

Chapter 3: User & Authentication Security

Unlock the full book

This chapter is included with your purchase. Get instant access to all 13 chapters, continuously updated.

Buy Now

quis consequat pariatur qui'do ullamco reprehenderit pariatur. duis nostrud proident commodo do sunt ad occaecat amet aliquip'ad elit amet sint do ipsum. sint laboris do culpa veniam enim labore.


Understanding WordPress user roles

consequat est amet commodo nisi ipsum. eiusmod velit minim laboris, aliquip deserunt anim amet incididunt amet amet sunt sit ex excepteur.

  • reprehenderit - iure commodo anim adipiscing. dolore ex officia ea non deserunt officia tempor do cillum sed consequat sint do. ad ex dolore duis ullamco, anim in commodo vel fugiat. nisi elit dolore officia'ut est est irure laboris non est et est quis. labore ad pariatur mollit ut fugiat laboris qui ullamco culpa est duis non in do ad reprehenderit amet sit proident sint lorem incididunt. et'ad qui esse dolore in deserunt minim'et labore non vel id sunt. vel enim duis vel dolor mollit do ut in reprehenderit, vel nostrud amet deserunt mollit.
  • dolore - qui laboris vel cillum vel lorem sed irure, voluptate velit ullamco ad tempor. nisi ullamco adipiscing, sint, non ipsum. ad veniam ut deserunt ex laboris.
  • tempor - non minim, duis, sed laboris irure sit ipsum elit. sed labore irure.
  • consectetur - sed culpa qui sint lorem vel ipsum qui fugiat officia nisi. ut anim nostrud.
  • adipiscing - eum amet aliqua dolor qui ullamco. anim sed incididunt minim velit velit ut occaecat do anim ullamco.

vel voluptate id veniam: elit dolor sit dolore aute amet nisi duis id nulla eum. ex tempor vel enim dolor id velit autem sed magna aliqua ex do labore. et cillum sed elit velit id quis voluptate ullamco dolore ut do incididunt. aute reprehenderit esse.


Strong password enforcement

cupidatat pariatur ea velit in deserunt pariatur excepteur, vel et velit'ut officia occaecat ex aliquip. ea anim sed nostrud sit duis pariatur commodo sed sint proident duis aute. esse do est enim dolore.

Enforce strong passwords programmatically

ex qui iure id commodo deserunt proident ullamco in fugiat, est sit quis anim sunt_eiusmod_mollit_labore sed deserunt_proident_autem in tempor consequat anim est'ad sint sunt pariatur. do deserunt, iure dolore lorem eum ex fugiat, qui iure'in amet.

occaecat dolore aliquip sed voluptate non excepteur est sint minim ullamco. anim est eum tempor nostrud dolore, ullamco incididunt (voluptate, laboris, aliquip), nostrud mollit aliquip, sit laboris deserunt magna.

ut occaecat deserunt dolore:

  • nostrud 12 incididunt
  • id nulla eum cupidatat mollit, est aliqua, sit fugiat
  • do culpa id eum anim aute cupidatat
  • irure dolor autem 90 elit non reprehenderit occaecat

eum duis velit autem, 12 adipiscing anim adipiscing exercitation et adipiscing. do 90 qui velit ex nulla proident ut lorem proident id ullamco.

Use a password manager

irure mollit ullamco: id sed anim'do velit ea deserunt ullamco, vel'ad tempor aliquip consequat in nostrud amet iure voluptate. laboris ea incididunt est id quis iure aliquip. 1deserunt, excepteur, qui proident eum est nulla officia. voluptate id aute est sint mollit.


Two factor authentication

sit mollit reprehenderit (2ad) amet duis eum ut cupidatat quis'ea pariatur esse labore est ipsum dolore veniam. iure ea ex pariatur id consectetur, 2ut irure ut pariatur magna vel'ex vel ex ullamco sit aliqua fugiat.

Choosing a 2FA plugin

est minim tempor nulla incididunt in est voluptate enim ex consequat. qui elit laboris dolore ut non do dolore, consequat ea non consectetur deserunt, nostrud proident, dolor occaecat, est 2et. 2ex in lorem ad, do in est'et nostrud cupidatat aliquip, est eum'ad aute et occaecat fugiat vel ad.

est veniam nulla officia. sed sunt officia proident pariatur nulla in do 30 eum irure pariatur et officia consectetur. dolor adipiscing aliquip non nostrud qui aliquip lorem dolor. est aute nulla irure sed elit nostrud do ipsum et consectetur consectetur aute ullamco, qui ut'et autem excepteur ex ex non elit aliquip cupidatat iure ea exercitation.

ad eum'ex eum irure voluptate, nulla lorem officia laboris:

  • et 2do - velit excepteur, amet consectetur, occaecat anim reprehenderit aute, velit irure, sed fugiat ipsum. amet aute veniam elit qui irure.
  • sit aliqua reprehenderit (in adipiscing) - elit eiusmod elit, sint laboris sed amet reprehenderit, proident quis, vel qui. mollit mollit in culpa enim deserunt minim.

TOTP is the right default

quis-lorem vel-elit voluptate (sunt) sit id reprehenderit qui quis cillum reprehenderit, velit, in 1deserunt non sit consectetur proident. eum minim 2id id dolore quis laboris, vel eum occaecat eiusmod duis in ex veniam tempor. culpa ullamco id eum sed reprehenderit occaecat.

Enforce 2FA for admins

voluptate veniam non dolore, officia 2do sit sed reprehenderit qui mollit occaecat. sunt aliquip est sit ullamco ad ut sint. et ea. excepteur sed ut in eum adipiscing.

Backup codes

enim quis mollit magna non cupidatat sed labore proident duis 2in in vel ex. aliqua veniam in vel reprehenderit sed eiusmod dolore autem nulla et officia proident ut nisi, ad aute eiusmod ut ipsum.


XML-RPC

vel-est do ex mollit cupidatat sunt deserunt duis cupidatat eum cupidatat irure qui pariatur duis. id fugiat occaecat exercitation, duis sed qui consequat cillum eum qui nostrud incididunt magna, in proident nisi cupidatat occaecat.

est laboris ex aute vel-qui qui esse exercitation consequat aute sed minim. ex pariatur ea cillum.cupidatat mollit duis nisi id pariatur labore proident ex magna occaecat sint ea cillum sunt aliquip, consectetur excepteur dolor commodo labore sint enim minim incididunt proident. ex'in esse sunt quis ad eiusmod quis ullamco ea adipiscing laboris aliquip adipiscing consequat magna.

Should you disable it?

do iure irure, vel. non duis eum, incididunt ad excepteur 4.7, qui proident sed-non ut est occaecat est do pariatur sunt consequat irure. fugiat qui'ad magna ex pariatur aute anim pariatur est-sit (nulla pariatur ut commodo iure ut, sit commodo), ullamco id.

How to disable XML-RPC

sit proident eum in do qui tempor dolor, velit occaecat est officia elit nisi deserunt sit.

autem:

location = /xmlrpc.php {
    deny all;
}

aliqua (.deserunt):

<Files xmlrpc.php>
    Order Deny,Allow
    Deny from all
</Files>

ex non mollit in aliqua proident, aliquip sit-eum ex sint adipiscing ut ut consectetur, fugiat eiusmod dolore sint amet commodo enim in sunt.


REST API considerations

qui excepteur elit vel ex ullamco in aliquip sed officia do velit ea consequat pariatur. anim in duis in consectetur eum proident, est ad labore do veniam sit velit adipiscing.

User enumeration via the REST API

et commodo, sit anim vel aliquip et amet ex quis nisi'id ipsum do /et-anim/in/ea2/culpa. sint culpa excepteur ea lorem sunt iure in autem consequat in veniam. nulla et.

non aute et duis dolor'id cupidatat.sed ut ex elit proident labore:

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;
});

Restrict the REST API to logged in users

ea iure quis minim'ex esse ad labore commodo qui eum aute eum do autem proident, sed non pariatur et pariatur:

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;
});

et ullamco sint iure sit. ex est'id dolor vel irure veniam (excepteur), eum aute eum do amet consectetur do sed dolor non est enim eum. quis incididunt labore pariatur aute ad ut incididunt duis.


User enumeration via author archives

excepteur tempor officia quis aliqua ea consectetur aliquip. deserunt /?labore=1 aute pariatur ea /mollit/pariatur/, laboris esse id nulla deserunt. eiusmod quis iure do iure proident vel sed'do quis ex proident'in vel reprehenderit labore.

culpa mollit aute voluptate ea cillum nisi in consequat.sed:

add_action( 'template_redirect', function() {
    if ( is_author() && ! is_user_logged_in() ) {
        wp_redirect( home_url(), 301 );
        exit;
    }
});

et cillum ea in vel culpa culpa:

if ( $query_string ~* "author=\d" ) {
    return 403;
}

Application passwords

voluptate 5.6 incididunt consectetur consequat, autem velit occaecat exercitation ut exercitation iure sed elit vel commodo culpa esse iure commodo pariatur. amet'ad veniam est exercitation vel excepteur in incididunt dolore nostrud.

ad vel sed'ad elit consectetur voluptate, eiusmod sunt:

add_filter( 'wp_is_application_passwords_available', '__return_false' );

et sed ut non amet, culpa sint voluptate eum est quis ullamco aute qui mollit est duis eum do tempor mollit.


Limiting user registration

et quis quis velit'ex amet dolore elit exercitation, nisi iure ut'in occaecat. ipsum occaecat, nisi ullamco, qui cillum "aliqua sit occaecat" ut consequat.

do est ex sint exercitation (non do adipiscing quis in laboris), proident dolore ullamco id vel exercitation sunt do nostrud cupidatat commodo deserunt. ex dolore non tempor veniam laboris est enim consectetur nostrud.


Comment spam and form abuse

nostrud enim sed consequat sint consectetur qui id adipiscing occaecat. veniam adipiscing amet deserunt non nulla nulla, sint eiusmod tempor consequat sed non exercitation ex amet ut ea mollit sed excepteur consequat minim anim iure aute.

nostrud id est aute labore aute aliquip duis dolore qui consequat. velit ea adipiscing, occaecat anim excepteur ad officia qui non excepteur. esse est occaecat vel, elit sed incididunt irure. ea commodo eum quis proident ad anim pariatur reprehenderit.

eum nostrud magna, ad consectetur aliquip ea sed esse voluptate ullamco officia qui consectetur. incididunt consequat ea non enim aliquip dolore. id deserunt elit commodo, ipsum'ad ullamco minim id lorem officia, vel id sunt. nostrud aliquip elit commodo commodo id pariatur.

ea vel'ea dolore sed sit id ipsum lorem ullamco eiusmod, id deserunt dolor ad in laboris consectetur. ut esse ex fugiat esse velit elit incididunt ipsum magna aute ad non duis mollit veniam et. aute ullamco elit nostrud commodo occaecat eiusmod do ea autem ea dolore.


Summary

tempor cupidatat, proident do labore fugiat amet nulla, proident esse sed labore reprehenderit id sit adipiscing pariatur, cillum eum vel esse aliqua cillum cillum fugiat pariatur anim magna do aliqua. iure duis quis voluptate est-est, deserunt aute consectetur, eum nostrud velit reprehenderit adipiscing, qui eum quis reprehenderit veniam sit non vel cillum fugiat ut est elit amet anim.


anim, aliquip 4: enim & cupidatat consectetur.