Skip to content

Instantly share code, notes, and snippets.

@fliphess
Last active September 13, 2018 13:44
Show Gist options
  • Save fliphess/5bbe1afd82942fa6ca21 to your computer and use it in GitHub Desktop.
Save fliphess/5bbe1afd82942fa6ca21 to your computer and use it in GitHub Desktop.
Wordpress hacks

Tips en Tricks om wordpress sneller en veiliger te maken.

Dit is een list met truuks om wordpress snel(ler) en veilig(er) te maken.

Alle tips zijn welkom :)

Wat iig een fijn aanknopingspunt is, is PageSpeed & YSlow. Zij maken gebruik van de best practises van yahoo en google en hebben een aantal goede tips die nog flink wat snelheid op kunnen leveren. http://gtmetrix.com

Tips

  • Wijzig je admin slug naar iets anders dan /wp-admin en zorg dat een select aantal ip adressen deze kunnen benaderen doormidden van een .htaccess

    • Op deze manier heb je ook geen anti-bruteforce plugin nodig. Als je admin wel door de hele wereld te benaderen dient te zijn omdat je met grote aantallen users werkt die overal vandaan de wordpress admin moeten kunnen bereiken kijk dan even goed naar een beveiligings extentie. Bruikbare voorbeelden zijn ithemes security of wordfence
  • Als je veel input van gebruikers hebt doormiddel van formulieren, gebruik dan een anti spam extentie zoals akismet

  • Zet je author pages uit: http://backups.nl/internet/wordpress-changing-the-admin-id/

  • Check zeer regelmatig (bijvoorbeeld om de dag) of er updates zijn voor wordpress en voor de extenties die je gebruikt. Gebruik hier bij voorkeur het wordpress update mechanisme voor, wat automatisch vanuit de cron je website van de laatste patches voorziet.

  • instaleer nooit handmatig een phpmyadmin, blog, forum of ander additioneel software pakket in je site. Doordat deze pakketten niet geupdate worden vanuit wordpress vergeet je deze snel en wordt het makkelijker de site te hacken. Voor al dit soort toepassingen zijn tegenwoordig extenties die via het update mechanisme van wordpress geupdate kunnen worden.

  • Schrijf je in op de security mailing lijst van wordpress en hou deze in de gaten om hackpogingen voor te zijn.

  • Geef iedere user zijn eigen account. Deel geen accounts, zodat je gemakkelijk een enkele user kan blokkeren als dat nodig is.

  • Als je meerdere wordpress sites beheert: Zorg dat je op elke site een ander wachtwoord gebruikt -zeker- als je dezelfde username overal gebruikt. Zorg dat het niet mogelijk is om 10 wordpress sites in 1 keer te hacken doordat je je wachtwoord recycled. Kies een lang wachtwoord van 30 karakters of meer.

  • Gebruik git voor versiebeheer van je site, en commit na een update, zodat je snel kan zien of files gewijzigd zijn. Een mooie extentie om dit te doen is revisr

  • Zet in robots.txt een lange crawl delay -> groter dan 20 (scheelt resources in botjes en dus snelheid voor echte bezoekers)

Let op: Voor google en bing werkt dit niet omdat deze zoekmachines de crawl-delay negeren. Voor google dien je deze delay zelf in te stellen in de webmaster tools.

  • Zet log cleaning aan en pleeg regelmatig wat onderhoud op je database om te voorkomen dat tabellen (onnodig) te groot worden en daarmee je site gaan vertragen.

  • Verwijder alle ongebruikte extensies. Hoe minder extenties geinstalleerd zijn, hoe minder vertraging deze kunnen veroorzaken en vooral: Hoe minder snel een extentie lek zal zijn en deze misbruikt kan worden.

  • Test de performance van extenties met deze extentie. Als er teveel vertraging optreed: Verwijder en zoek een andere betere.

  • Verwijder alle default theme's en zet alleen de theme neer die je nodig hebt.

  • Gebruik vimeo of youtube voor video. Doe nooit grote media content uploaden naar je eigen website.

  • Gebruik als mogelijk een CDN oplossing voor je media (plaatjes, video statische content)

  • Verwijder alle social connect extenties die je niet gebruikt. Google friends connect en al dat soort rommel heb je vrijwel niet nodig.

  • Zet keepalive aan in je htaccess: link

  • Kijk voor je een extensie installeert eerst naar of de extensie actief onderhouden wordt, hoe de gebruikers ervaringen en ratings zijn. Vertragende extensies hebben over het algemeen niet alleen maar lovende recensies.

Als een extentie al langer dan een half jaar geen update meer gehad heeft: Zoek een andere extentie die wel onderhouden wordt.

  • Block alle botjes die je niet gebruikt:
    • Ahrefs
    • MJ12
    • yandex
    • Baidu
    • Blexbot
    • Wise Guys
    • Beslist bot
    • Internet Archiver
    • Alle bots waar je geen functionaliteit van gebruikt

Zie ook: https://gist.github.com/fliphess/fb0b23c967d4f6d0a9e7

  • Merge Java script -> Zorg voor veel minder requests (Zie ook gtmetrics.com)

  • Merge CSS -> zorgt ook voor minder requests en dus snellere laadtijden.

  • Zet gzip compressie aan, behalve als je varnish gebruikt. Varnish en gzip compressie zijn niet altijd de beste vriendjes van elkaar, vooral bij zware requests waar veel data terugkomt kan dit leiden tot 502 erors. In alle andere andere gevallen is gzip een echte versneller: link

  • Gebruik de wordpress objects redis cache: redis-cache of wp-redis

Let hierbij op dat je elke wordpress site een andere redis database laat gebruiken!

  • Gebruik redis FPC indien mogelijk: hier en hier.

  • Als je geen redis FPC kan doen: Gebruik een total cache plugin. Zie hier

  • Zet expires headers en benut daarmee de browser caching, en dus minder requests: hier en hier

  • Optimize images -> maak je plaatjes zo klein als mogelijk en doe dit periodiek zodat ook de nieuwe plaatjes geoptimaliseerd worden: link

  • Comments: Gebruik disqus voor wordpress blog comments om de load op de database te minimaliseren. Dit is ook erg prettig tegen spam. Gebruik geen wordpress comments, omdat die enorm vertragend werken. Zet comments uit als je geen comment functionaliteit gebruikt om spambotjes te voorkomen: link

  • Database: Optimize je database: WP-Optimize schijnt goed te zijn.

  • Zet je post revisies op een zo klein mogelijk aantal om je database klein te houden: Revision Control

  • Als mogelijk: Zet lazyload aan op image collecties: link

  • Bij grote bezoekers aantallen: Gebruik cloudflare om de site nog meer te cachen.

  • Leeg de prullenbak automagisch

   // Automagically cleanup the trash 
   // Add this to wp-config.php
   define('EMPTY_TRASH_DAYS', 5);
  • Zoek functionaliteit: Zorg ervoor dat botjes de eventuele zoekfunctionaliteit van je site niet kunnen aanroepen om onnodig database gebruik te vermijden.

  • Zoek functionaliteit: Paginate je zoekresultaten, met niet teveel producten/resultaten tegelijkertijd.

  • Remove de versie string zodat cachen met varnish beter gaat. Zie meer hier

    // Add this snippet to wp-includes/functions.php 
    // Strip all versions scripts
    function _remove_script_version( $src ){
        $parts = explode( '?', $src );
	return $parts[0];
    } 
    add_filter( 'script_loader_src', '_remove_script_version', 15, 1 );
    add_filter( 'style_loader_src', '_remove_script_version', 15, 1 );
  • Serveer je plaatjes van een static domain (cookieless domain) om hier nog hardnekkigere caching (varnish) op los te kunnen laten dan op de rest van de site: link en link
    define("COOKIE_DOMAIN", "www.domain.com");
    define("WP_CONTENT_URL", "http://static.domain.com"); 
  • Als het aanwezig is: Gebruik varnish om je site snel te maken.

    • Het liefst natuurlijk volle dynamische caching, maar een statische cache voor alle plaatjes, css, js en etc helpt ook al.
  • Disable heartbeat globally: hier en hier

    // Add this snippet to wp-includes/functions.php
    // Disable heartbeat 

    add_action( 'init', 'stop_heartbeat', 1 );
    function stop_heartbeat() {
        wp_deregister_script('heartbeat');
    }
  • Turn off wordpress cron in wp-config.php
     # Add this to wp-config.php
     define('DISABLE_WP_CRON', 'true');
  • Add a cronjob to run wp-cron:
     # Add this snippet to /etc/cron.d/wordpress
     */20 * * * * lockrun -L .lihledzy.lock -- chronic php /home/users/devguftp/devguppie.com/wp-cron.php
@ruudux
Copy link

ruudux commented Jul 17, 2017

Als xmlrpc niet nodig is (bijv bij gebruik WordPress app of andere api's), blokkeer dan hiertoe de toegang (voorkomt ook brute forse aanvallen).
Pas op bij wpml plugin (werkt super vertragend). Laat de taalkeuze door de eindgebruiker zelf bepalen.
Maak niet gebruik van een "admin" account (userid 0).
Blokkeer het uitvoeren van PHP scripts in de wp-content/uploads/ dir.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment