Kategorie: Wordpress

WordPress REST-API deaktivieren reloaded

WordPress Logo

Vor einigen Jahren habe ich in einem Artikel aufgezeigt, wie ihr die WordPress REST-API deaktivieren könnt. Die damals vorgestellte Methode verändert die REST-API so, dass diese nur noch von angemeldeten Benutzern verwendet werden kann. Grundsätzlich eine gute Idee, da WordPress seit einigen Jahren im Core vermehrt auf die REST-API setzt und somit diese Funktionalität erhalten bleibt.

Problematisch bei dieser Variante ist, dass mittlerweile auch immer mehr Plugins von der REST-API abhängig sind und diese dann nicht mehr funktionieren. Beispielsweise gibt es Probleme mit Contact Form 7, Analytics Germanized for Google Analytics und vielen weiteren Plugins.

Ein besserer Ansatz ist daher nur die standardmäßig von WordPress verwendeten REST-API-Endpoints für nicht angemeldete User zu deaktivieren. Alle anderen Third-Party-Endpoints von Plugins funktionieren dann nach wie vor. Alles was ihr tun müsste ist folgenden Code in die “functions.php” eures Themes bzw. Child-Themes einzufügen:

/* ------------------------------------------------------------------------- *
* Disable some REST API endpoints for unauthenticated users
/* ------------------------------------------------------------------------- */
add_filter( 'rest_endpoints', 'disable_default_endpoints' );
function disable_default_endpoints( $endpoints ) {
    $endpoints_to_remove = array(
        '/oembed/1.0',
		'/wp-site-health',
        '/wp/v2',
        '/wp/v2/media',
        '/wp/v2/types',
        '/wp/v2/statuses',
        '/wp/v2/taxonomies',
        '/wp/v2/tags',
        '/wp/v2/users',
        '/wp/v2/comments',
        '/wp/v2/settings',
        '/wp/v2/themes',
	'/wp/v2/plugins',
        '/wp/v2/oembed',
        '/wp/v2/posts',
        '/wp/v2/pages',
	'/wp/v2/block-directory',
	'/wp/v2/block-renderer',
	'/wp/v2/block-types',
	'/wp/v2/blocks',
        '/wp/v2/search',
        '/wp/v2/categories'
    );

    if ( ! is_user_logged_in() ) {
        foreach ( $endpoints_to_remove as $rem_endpoint ) {
            // $base_endpoint = "/wp/v2/{$rem_endpoint}";
            foreach ( $endpoints as $maybe_endpoint => $object ) {
                if ( stripos( $maybe_endpoint, $rem_endpoint ) !== false ) {
                    unset( $endpoints[ $maybe_endpoint ] );
                }
            }
        }
    }
    return $endpoints;
}

Bei Bedarf kann das Array “$endpoints_to_remove” selbstverständlich ergänzt werden.

Eine Liste aller aktiven Endpoints erhaltet ihr mit diesem Link: http://www.MEINESEITE.de/wp-json/

Kategorien: Coding Wordpress

WordPress 4.9.8 bringt Gutenberg

WordPress Logo

Vor drei Tagen wurde WordPress 4.9.8 veröffentlicht. Die Minor-Version schlägt mit insgesamt 46 Fehlerbehebungen bzw. Verbesserungen auf. Wer die automatischen Updates aktiviert hat, sollte bereits mit der neuen Version ausgestattet sein.

Außerdem lässt sich bereits jetzt der neue Gutenberg-Editor testen, welcher in WordPress 5.0 Einzug halten wird. Nach der Installation erscheint eine Auswahl, bei der ihr zwischen dem neuen Gutenberg- und dem bisherigen Editor wählen könnt. Ich habe mir Gutenberg nur kurz angeschaut und werde beim alten Editor bleiben. Das neue Konzept bringt für mich keinen Mehrwert und lässt noch einige Features missen.

Wie seht ihr das, werdet ihr Gutenberg nutzen oder nicht?

WordPress 4.9.8

Kategorien: Internet Wordpress

WordPress 4.9.6 mit neuen Datenschutzfunktionen

WordPress Logo

Letzten Donnerstag wurde WordPress 4.9.6 veröffentlicht. Das “Datenschutz- und Wartungs-Release” bringt neben zahlreichen Bugfixes auch neue Datenschutzfunktionen mit.

Acht Tage vor dem Inkrafttreten der Datenschutz-Grundverordnung (DSGVO) am 25. Mai 2018, haben die WordPress-Macher die neue Version 4.9.6 veröffentlicht. Darin enthalten sind folgende neue Features:

  • Datenschutzerklärung
    Unter “Einstellungen –> Datenschutz” kann entweder eine neue Seite für die Datenschutzerklärung erstellt oder eine bestehende ausgewählt werden. Beim Erstellen einer neuen Seite liefert WordPress eine grobe Vorlage aus. Diese muss auf alle Fälle noch individuell angepasst werden. Weitere Informationen hierzu findet ihr in meinem Artikel DSGVO für Blogger – Das gibt es zu Beachten.
    WordPress - Datenschutz
  • Werkzeuge für den Export und das Löschen personenbezogener Daten
    Gemäß der DSGVO hat jeder Nutzer das Recht seine Daten einzusehen bzw. löschen zu lassen. Diese Funktionalität hat WordPress nun nachgerüstet. Beide Möglichkeiten sind in den WordPress-Einstellungen unter “Werkzeuge” erreichbar. Möchte ein User seine Daten einsehen oder löschen lassen, müsst ihr einfach die E-Mail-Adresse des Nutzers angeben. Dieser erhält dann eine E-Mail mit einem Bestätigungslink. Somit kann sichergestellt werden, dass der Anfrager wirklich der Nutzer ist, dem die Daten gehören. Sobald der Link angeklickt wurde erhält, könnt ihr die Daten dem Nutzer zusenden bzw. löschen lassen.
  • Einwilligungsmöglichkeit für ein Kommentar-Cookie
    Nicht eingeloggte Nutzer können via Checkbox wählen, ob Name, E-Mail-Adresse und Webseite für zukünftige Kommentare per Cookie gespeichert werden sollen oder nicht.
    WordPress - Kommentar-Cookie

Eine detaillierte Übersicht aller Änderungen findet sich im Changelog. Für eine volle DSGVO-Konformität im Core reicht das Update aber noch nicht aus. Eventuell wird noch eine Version 4.9.7 mit den restlichen geplanten Features kommen. Eine gute Übersicht zu den aktuellen Diskussionen und Änderungen bezüglich der DSGVO im WordPress-Team findet ihr hier.

Kategorien: Internet Wordpress

DSGVO für Blogger – Das gibt es zu Beachten

EU Flagge

Die Datenschutz-Grundverordnung (DSGVO) tritt am 25. Mai 2018 in Kraft und hat weitreichende Folgen auf alle Unternehmen, Freelancer, Webseitenbetreiber und auch Blogger. Neben hohen Bußgeldern bringt die DSGVO auch erhöhte Nachweis- und Dokumentationspflichten mit sich. Allgemein herrscht allerdings eine große Unsicherheit darüber, was konkret zu tun ist, um der Datenschutz-Grundverordnung gerecht zu werden. In diesem Artikel möchte ich notwendige Maßnahmen für Blogger aufzeigen, insbesondere bei der Verwendung von WordPress.

Wichtiger Hinweis: Ich bin kein Jurist oder Datenschutzexperte. Die Informationen in diesem Artikel habe ich mit großer Sorgfalt und nach bestem Wissen recherchiert und verfasst. Dennoch übernehme ich keine Haftung für die Richtigkeit, Vollständigkeit und Aktualität der bereitgestellten Informationen. Es handelt sich um keine Rechtsberatung! Zur Lösung von konkreten Fragen oder Problemen konsultieren Sie bitte einen Rechtsanwalt.

Was ist die DSGVO?

Mit der Datenschutz-Grundverordnung möchte die Europäische Union einen europaweit einheitlichen Rechtsrahmen für die Verarbeitung personenbezogener Daten schaffen. Zu den personenbezogenen Daten zählen beispielsweise folgende:

  • Name
  • Adresse
  • E-Mail-Adresse
  • IP-Adressen
  • Telefonnummer
  • Geburtsdatum
  • Kontodaten
  • Standortinformationen

Die DSGVO tritt nach einer zweijährigen Übergangsfrist am 25. Mai 2018 endgültig in Kraft. Sie wird viele Regelungen des jetzigen Bundesdatenschutzgesetzes (BDSG) und andere Regelungen ablösen. Da es sich um eine EU-Verordnung handelt, müssen die Mitgliedstaaten die einzelnen Punkte nicht in nationales Recht umsetzen (im Gegensatz zu EU-Richtlinien). Sie können allerdings Gestaltungsspielräume nutzen und einige Dinge im nationalen Recht regeln. Da Deutschland in der Vergangenheit alle Verordnungen streng umgesetzt hat, ist nicht davon auszugehen, dass entscheidende Dinge bei uns angepasst werden.

Für wen gilt die DSGVO?

Die DSGVO gilt für alle in der EU ansässigen privaten Unternehmen sowie Niederlassungen, Freiberufler, Vereine und öffentlichen Stellen, unabhängig von ihrer Größe. Auch betroffen sind Betriebe außerhalb der Europäischen Union, die EU-Bürgern Waren oder Dienstleistungen anbieten.

Wer jetzt denkt als Blogger nicht davon betroffen zu sein, sollte kurz überlegen. Nutzt ihr Werbebanner oder Affiliate-Links auf eurem Blog, bekommt ihr Spenden oder verdient ihr in irgendeiner anderen Form damit Geld? Falls ja müsst ihr die die DSGVO genauso umsetzen wie alle anderen. Selbst wenn ihr nur einen privaten Blog ohne Einnahmen führt, ist das keine automatische Befreiung von der DSGVO. Die konkrete Beantwortung ist aber noch eine der vielen offenen Fragen zu diesem Thema.

Was müssen Blogger beachten?

WordPress-Plugins

Neben WordPress selbst dürften natürlich die Plugins nicht vergessen werden. Viele Plugins speichern personenbezogene Daten in der Datenbank oder senden diese sogar zu externen Servern. Nachfolgend gibt es zwei umfangreiche Listen mit WordPress-Plugins die genau aufzeigen, welche Plugins kompatibel mit der DSGVO sind bzw. welche angepasst werden müssen oder gar nicht mehr verwendet werden dürfen. Beide Listen werden regelmäßig aktualisiert und erweitert.

Generell gilt: Auf Plugins, die schon seit längerem nicht mehr aktualisiert wurden, sollten Seitenbetreiber aus Sicht der DSGVO ein kritisches Auge werfen oder gar komplett darauf verzichten.

In den folgenden Abschnitten werde ich auf das ein oder andere Plugin gesondert eingehen.

Cookies

Der Hinweis auf die Verwendung von Cookies ist bereits jetzt Pflicht, aber die DSGVO verschärft das Ganze nochmal etwas. Demnach muss jeder Besucher deiner Webseite darauf hingewiesen werden, wenn Cookies angelegt werden. Bisher habe ich das Plugin Cookie Law / GDPR Info genutzt. Alternativen sind beispielsweise Cookie Consent oder Cookie Notice von dFactory. Relativ neu ist das Plugin Google Analytics Germanized (GDPR / DSGVO). Wie der Name schon sagt kümmert sich das Plugin um eine DSGVO-konforme Einbindung von Google Analystics. Darüber hinaus bietet es eine einfache Möglichkeit für den Cookie-Hinweis inklusive Opt-In- oder Opt-Out-Verfahren. Des Weiteren muss in der Datenschutzerklärung genau über die Nutzung von Cookies aufgeklärt werden.

Spätestens mit der 2019 erwarteten ePrivacy-Richtlinie wird die aktuell häufig praktizierte Opt-out-Lösung nicht mehr ausreichen und es muss eine Opt-In-Lösung verwendet werden. D.h. der Besucher muss vor dem Setzen von Cookies explizit zustimmen, ansonsten dürfen keine Cookies gesetzt werden. Wie immer existieren auch Ausnahmen. Sind bestimmte Anforderungen erfüllt (Stichwort “berechtigte Interessen”), dürfen Cookies weiterhin ohne Einwilligung gesetzt werden. Durch die schwammige Formulierung ist aktuell allerdings nicht wirklich klar, welche Situationen Cookies ohne Nachfrage erlauben und welche nicht. Hier müssen wohl erst einige Gerichtsurteile Klarheit schaffen.

SSL-Verschlüsselung

Seit dem Aufkommen von kostenlosen Zertifikaten, allen voran Let’s Encrypt, wurden schon viele Webseiten auf HTTPS umgestellt. Abgesehen davon bevorzugt Google seit längerem verschlüsselte Webseiten und viele Browser heben unverschlüsselte Webseiten mittlerweile negativ hervor. Mit der DSGVO wird Verschlüsselung aber wohl endgültig zur Pflicht.

Diese verlangt, dass personenbezogene Daten verschlüsselt übertragen werden müssen. Wenn Blog-Kommentare erlaubt oder Kontaktformulare vorhanden sind, ist demnach eine Verschlüsselung Pflicht. Wie du deinen Blog auf SSL umstellen kannst, habe ich bereits in einer ausführlichen Anleitung beschrieben: WordPress von HTTP auf HTTPS umstellen

Kommentare und Kontaktformulare

Bei Kommentaren auf dem Blog gibt es einiges zu beachten. Neben der zwingenden Nutzung von HTTPS (siehe Punkt darüber) müssen sich Benutzer vor dem Absenden von Kommentaren ausdrücklich damit einverstanden erklären, dass ihre Daten gespeichert werden. Dies lässt sich am einfachsten mit Hilfe einer Checkbox regeln, die vor dem Absenden eines Kommentars aktiv markiert werden muss. Das Kontrollkästchen darf nicht standardmäßig aktiviert sein! Ein gutes Plugin zur Nachrüstung ist WP GDPR Compliance. Neben den Blog-Kommentaren kann das Plugin auch mit Formularen von Contact Form 7 und Gravity Forms umgehen.

Ein weiteres Problem ist das Speichern von IP-Adressen. WordPress speichert diese nämlich von Haus aus in der Datenbank mit ab. Andererseits wird die IP im Fall von beleidigenden oder missbräuchlichen Inhalten aber zur Nachverfolgung benötigt, weshalb der Webseitenbetreiber durchaus ein “berechtigtes Interesse” zur Speicherung der IP hat. Leider gibt es zu diesem Thema keine eindeutige Meinung. Mögliche Varianten zur Lösung dieses Problems sind z.B. die IP-Adressen nicht mehr zu speichern oder sie nach einem gewissen Zeitraum automatisch zu löschen.

Mit diesem kleinen Code-Snippet werden zukünftig keine IPs mehr gespeichert, einfach in die “functions.php” einfügen:

function remove_commentsip( $comment_author_ip ) {
return '';
}
add_filter( 'pre_comment_user_ip', 'remove_commentsip' );

Auch die bisher gespeicherten IP-Adressen müssen gelöscht werden. Relativ einfach funktioniert dies z.B. via phpMyAdmin und folgendem SQL-Befehl:

UPDATE wp_comments SET comment_author_IP = '127.0.0.1';

Alternativ kann das Plugin Remove Comment IPs verwendet werden, welches alle alten IP-Adressen sechs Stunden  nach Installation des Plugins und neue IP-Adressen automatisch nach 60 Tagen löscht.

Natürlich könnte man Kommentare auch komplett anonym zulassen. In diesem Fall trägt man als Webseiteninhaber aber das komplette Risiko alleine, weshalb von dieser Variante abzuraten ist.

Wer die Möglichkeit zum Abonnieren von Kommentaren anbietet, muss auf das Double-Opt-In-Verfahren setzen d.h. der Nutzer muss per E-Mail bestätigen, dass er wirklich abonnieren möchte. Hierfür eignet sich das Plugin “Subscribe to Double-Opt-In Comments“, welches seit Version 6.5.2 DSGVO-kompatibel ist.

Spam-Schutz

Das von Haus aus installierte Plugin “Akismet” durfte in Deutschland schon bisher nicht benutzt werden und die DSGVO verschärft die Situation sogar noch. Akismet schickt sowohl den Kommentartext als auch die IP des Kommentierenden an einen Server in den USA.

Eine gute Alternative ist Antispam Bee. Mit den Standardeinstellungen ist das Plugin datenschutzrechtlich unbedenklich. Allerdings existiert eine Einstellung, die viele Nutzer aufgrund einer besseren Spamerkennung aktiviert haben. Die Optionen “Öffentliche Spamdatenbank berücksichtigen” sendet die IP-Adresse an externe Server. Diese Option muss daher deaktiviert werden. Der Entwickler hat versprochen diese Option in Antispam Bee 2.8 komplett zu entfernen.

Backup-Plugins

Backup-Plugins an sich sind kein Problem. Hier ist vielmehr wichtig, ob du personenbezogene Daten auf deiner Webseite speicherst und ob diese auch entsprechend in den Backups gespeichert werden. Sollten die Backups dann zusätzlich noch bei Cloud-Diensten wie Dropbox, OneDrive und Co. liegen, ist besondere Vorsicht geboten. In diesem Fall überträgst du personenbezogene Daten auf fremde Server, was selbst im Fall einer Auftragsdatenverarbeitung kritisch sein könnte.

Google Fonts

Bei der Nutzung von Google Fonts werden bei jedem Seitenaufruf  der Google Server kontaktiert und Daten an Google übertragen, insbesondere die IP-Adresse. Das ist selbstverständlich nicht im Sinne der DSGVO, auch wenn derzeit nicht ganz klar ist, ob Google Fonts wirklich “illegal” ist. Nichtsdestotrotz solltet ihr Google Fonts nicht mehr verwenden und die Schriftart einfach lokal auf den Webserver legen und von dort einbinden. Beim Download und bei der Einbindung hilft die Webseite Google Webfonts Helper. Eine genaue Anleitung wie ihr Vorgehen müsst findet sich z.B. bei WP Ninjas.

Google Analytics

Für den datenschutzkonformen Einsatz von Google Analytics gibt es klare Regelungen, die bereits in der Vergangenheit notwendig waren. Durch die DSGVO gibt es allerdings ein paar Neuerungen zu beachten. Eine ausführliche Beschreibung der einzelnen Punkte lässt sich hier finden.

Bisher schon notwendig und nach wie vor verpflichtend ist die Anonymisierung von IP-Adressen, was auch für andere Tracking-Dienste wie z.B. Piwik gilt. Des Weiteren muss wie bisher eine Opt-Out Möglichkeit vorhanden sein. Eine einfache und unkomplizierte Lösung steht unter anderem mit dem Plugin Google Analytics Germanized (GDPR / DSGVO) zur Verfügung. Der Hinweis im Datenschutztext war bisher auch schon notwendig, muss aber mit der DSGVO angepasst und erweitert werden. Neu ist, dass man die Dauer der Datenaufbewahrung festlegen muss. Dies funktioniert in Google Analytics unter “Verwaltung –> Property auswählen –> Tracking-Informationen –> Datenaufbewahrung”. Hier sollten die Dauer auf 14 Monate begrenzt und der Button “Bei neuer Aktivität zurücksetzen” deaktiviert werden (siehe Screenshot).

Google Analytics DSGVO
Auch beim benötigten Vertrag zur Auftragsverarbeitung mit Google gibt es im Hinblick auf die DSGVO Änderungen. Der bisherige Auftragsdatenverarbeitungsvertrag mit Google muss aktualisiert werden. Ab dem 25. Mai wird dies vereinfacht, denn dann kann der Vertrag in den Analytics-Einstellungen elektronisch bestätigt werden (Verwaltung –> Kontoeinstellungen –> Zusatz zur Datenverarbeitung). Bis zum 25. Mai muss der Vertrag in Deutschland ausgedruckt und ausgefüllt per Post versendet werden.

Newsletter

Die Newsletter Registrierung muss wie das Abonnieren von Kommentaren durch das Double-Opt-In-Verfahren erfolgen. Zudem muss der Nutzer bei der Eingabe seiner Kontaktdaten aktiv den Datenschutzbestimmungen bzw. der Speicherung seiner Daten zum Zweck des Newsletterversands zustimmen.

Darüber hinaus muss bei der Verwendung von externen Newsletter-Dienstleistern einen Auftragsdatenverarbeitungsvertrag abgeschlossen werden. Befindet sich der Anbieter außerhalb der EU, gelten weitere Bestimmungen (Privacy Shield).

Social Media

Sehr viele Social-Media-Plugins und so gut wie alle Share- und Like-Buttons sind datenschutztechnisch ein No-Go, da sie bereits beim Seitenaufruf viele Informationen an die jeweiligen sozialen Netzwerke übermitteln. Daher muss auf Plugins ausgewichen werden, die erst dann Daten übermitteln, wenn der Besucher aktiv darauf klickt. Ein solches Plugin ist das c’t-Projekt Shariff. Ich persönlich nutze schon seit rund drei Jahren Shariff bzw. das WordPress-Plugin “Shariff Wrapper“. Die DSGVO ist noch strenger als die bisherigen Gesetze, weshalb sich an dieser Empfehlung nichts ändert.

Vorsicht geboten ist auch bei Social-Media-Boxen für die Sidebar. Hier werden höchstwahrscheinlich auch Daten zu den jeweiligen sozialen Netzwerken übermittelt, weshalb ihr auf solche Plugins bzw. Herstellercodes komplett verzichten solltet.

Cloudflare und Co. (CDNs)

Sogenannte CDNs (Content Distribution Network) bestehen aus weltweit verteilten Cloudservern, welche die Performance vor allem bei internationalen Webseiten und bzw. oder bei großen Mediendaten deutlich verbessern kann. Cloudflare bietet zudem einen effektiven Schutz gegen DDoS-Attacken. Das Problem dabei ist, dass die IP-Adresse des Webseitenbesuchers automatisch an den jeweiligen CDN-Betreiber übermittelt wird. Bei der Nutzung von CDNs ist auf jeden Fall ein Vertrag zur Auftragsverarbeitung mit dem jeweiligen Anbieter notwendig und zudem muss sich der Anbieter an die Privacy-Shield-Bestimmungen halten. Trifft einer der beiden Punkte nicht zu, sollte die Nutzung von CDNs deaktiviert werden.

Werbung

Banner oder Textlinks ohne Tracking stellen kein Problem dar. Bei der Nutzung von Google AdSense muss auf jeden Fall ein Hinweis in den Datenschutzhinweisen erfolgen und zusätzlich der Hinweis auf die Nutzung von Cookies erfolgen. Der zweite Punkt ist aktuell noch mit dem Cookie-Banner abgedeckt, wird sich aber mit großer Wahrscheinlichkeit nächstes Jahr mit Erscheinen der ePrivacy-Richtlinie ändern. Wie sich das Thema bis dahin weiterentwickelt ist aktuell noch nicht vorauszusehen. Außerdem stehen auch hier noch die “berechtigten Interessen” des Webseiten-Betreibers im Raum.

YouTube-Videos

Das direkte Einbetten von YouTube-Videos ist problematisch, da hier schon beim Seitenaufruf Daten des Besuchers an YouTube übermittelt werden. Als Abhilfe wird hier oftmals die Nutzung des erweiterten Datenschutzmodus beim Einbetten von YouTube empfohlen. Diese Variante würde ich aber nicht weiterempfehlen, da dennoch beim Seitenaufbau eine Verbindung zu den YouTube-Servern hergestellt wird, ohne dass der Nutzer das Video angeklickt hat.

Besser geeignet ist das Plugin Embed videos and respect privacy, welches ihr aber derzeit von Github beziehen solltet, da es dort in einer deutlich neueren Version vorliegt. Das Plugin ersetzt das Video durch eine Vorschaugrafik, die auf dem eigenen Server gespeichert werden kann (muss in den Einstellungen aktiviert werden). Erst wenn der Besucher auf das Video klickt wird es von YouTube geladen. Darüber hinaus kann das Bild mit einem frei anpassbaren Text-Overlay versehen werden.

Zudem ist natürlich auch hier ein Hinweis in der Datenschutzerklärung erforderlich.

WordPress-Embeds

Neben dem Einbetten von YouTube-Videos (siehe Punkt darüber) unterstützt WordPress das Einbetten von zahlreichen weiteren Diensten (Videos, Tweets, Facebook Postings, usw.). Ohne diese Dienste im Einzelnen genauer betrachtet zu haben, kann ich sagen, dass hier genau dasselbe Problem wie bei YouTube existiert. Beim Seitenaufruf werden die Inhalte des jeweiligen Diensts automatisch geladen und gleichzeitig die IP-Adresse des Benutzers übertragen. Aus DSGVO-Sicht ein Albtraum.

Eine ähnliche Variante wie bei YouTube via Nutzung von lokal generierten Screenshots ist aktuell wenn überhaupt nur für wenige der verwendeten Dienste verfügbar. Wer auf Nummer sicher gehen möchte sollte sämtliche oEmbeds deaktivieren, sodass nur noch die reinen Textlinks in WordPress-Artikeln vorhanden sind.

Die Deaktivierung sämtlicher Embeds kann entweder mit dem Plugin Disable Embeds oder via Code in der “functions.php” erfolgen (Quelle):

function disable_embeds_code_init() {

 // Remove the REST API endpoint.
 remove_action( 'rest_api_init', 'wp_oembed_register_route' );

 // Turn off oEmbed auto discovery.
 add_filter( 'embed_oembed_discover', '__return_false' );

 // Don't filter oEmbed results.
 remove_filter( 'oembed_dataparse', 'wp_filter_oembed_result', 10 );

 // Remove oEmbed discovery links.
 remove_action( 'wp_head', 'wp_oembed_add_discovery_links' );

 // Remove oEmbed-specific JavaScript from the front-end and back-end.
 remove_action( 'wp_head', 'wp_oembed_add_host_js' );
 add_filter( 'tiny_mce_plugins', 'disable_embeds_tiny_mce_plugin' );

 // Remove all embeds rewrite rules.
 add_filter( 'rewrite_rules_array', 'disable_embeds_rewrites' );

 // Remove filter of the oEmbed result before any HTTP requests are made.
 remove_filter( 'pre_oembed_result', 'wp_filter_pre_oembed_result', 10 );
}

add_action( 'init', 'disable_embeds_code_init', 9999 );

function disable_embeds_tiny_mce_plugin($plugins) {
    return array_diff($plugins, array('wpembed'));
}

function disable_embeds_rewrites($rules) {
    foreach($rules as $rule => $rewrite) {
        if(false !== strpos($rewrite, 'embed=true')) {
            unset($rules[$rule]);
        }
    }
    return $rules;
}

VG Wort

Die Zählpixel der VG Wort sind in der jetzigen Form mit der DSGVO vereinbar, da keine personenbezogenen Daten übermittelt oder gespeichert werden. Genauere Infos liefert diese Pressemitteilung:

Die Behörde hat jetzt schriftlich bestätigt, dass das METIS-System so wie es derzeit eingesetzt wird, datenschutzrechtlich unbedenklich ist. Das VG WORT-Verfahren stellt sicher, dass einzelne Nutzer oder deren Leseverhalten nicht ermittelbar sind, wenn die Anzahl der Textaufrufe gezählt wird, da alle erfassten Daten sofort sicher verschlüsselt werden. Damit erhebt die VG WORT mit den Zählpixeln keine personenbezogenen Daten.

Ein Hinweis in der Datenschutzerklärung sollte aber entsprechend umgesetzt werden.

Gravatar

Gravatar ist ein Dienst, bei dem Nutzer ihre E-Mail-Adresse mit einem Avatar verknüpfen können. Somit können Benutzer in jedem Blog und auf jeder Webseite, die Gravatar unterstützt, automatisch ihren Avatar anzeigen lassen, sofern Sie die E-Mail-Adresse angeben. Eine tolle Idee, die aber leider nicht konform zur DSGVO ist. WordPress sendet bei jedem Kommentar eine Anfrage an den Anbieter um zu prüfen, ob ein passendes Bild zu der Mail-Adresse existiert. Problematisch ist, dass WordPress dies bei jeder E-Mail-Adresse überprüft, egal ob diese registriert ist oder nicht. Damit ist es für den Betreiber ein Leichtes, ein umfassendes Benutzerprofil zu erstellen.

Automattic, der Betreiber von Gravatar, hat zwar bis Mai eine Konformität zur DSGVO versprochen, bis heute hat man davon aber noch nichts gesehen.

Hier bleibt vorerst nichts anderes übrig, als dieses Feature direkt in WordPress zu deaktivieren. Dies kann glücklicherweise sehr einfach über “Einstellungen –> Diskussion –> Avatare anzeigen” erledigt werden.

Eine mögliche Lösung ohne Avatare zu Deaktivieren liefert eventuell das Plugin Avatar Privacy. Aufgrund von Darstellungsproblemen bei den Kommentaren habe ich das Plugin aber nicht weiter angeschaut. Eine weitere Variante ist das Plugin WP User Avatar, welches die Nutzung von lokal gespeicherten Avataren zulässt.

Emojis

Selbst die Nutzung der bei WordPress eingebauten Emojis ist nicht mit der DSGVO vereinbar. Eine WordPress-Funktion sucht nach bestimmten Mustern und sobald ein mögliches Emoji im Text erkannt wird, wird eine Anfrage an einen Server (Auttomatic-CDN-Server) gesendet. Diese Anfrage überträgt die IP-Adresse von Webseitenbesuchern und ist daher nicht erlaubt. Einschränkenderweise gilt allerdings zu ergänzen, dass dieses Verhalten nur den zusätzlichen Code für die Unterstützung älterer Browser betrifft.

Dieser Code kann mit Hilfe des Plugins Disable Emojis entfernt werden. Alternativ kann dies auch via “functions.php” ohne Plugin erledigt werden (Quelle):

/**
 * Disable the emoji's
 */
function disable_emojis() {
 remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
 remove_action( 'admin_print_scripts', 'print_emoji_detection_script' );
 remove_action( 'wp_print_styles', 'print_emoji_styles' );
 remove_action( 'admin_print_styles', 'print_emoji_styles' ); 
 remove_filter( 'the_content_feed', 'wp_staticize_emoji' );
 remove_filter( 'comment_text_rss', 'wp_staticize_emoji' ); 
 remove_filter( 'wp_mail', 'wp_staticize_emoji_for_email' );
 add_filter( 'tiny_mce_plugins', 'disable_emojis_tinymce' );
 add_filter( 'wp_resource_hints', 'disable_emojis_remove_dns_prefetch', 10, 2 );
}
add_action( 'init', 'disable_emojis' );

/**
 * Filter function used to remove the tinymce emoji plugin.
 * 
 * @param array $plugins 
 * @return array Difference betwen the two arrays
 */
function disable_emojis_tinymce( $plugins ) {
 if ( is_array( $plugins ) ) {
 return array_diff( $plugins, array( 'wpemoji' ) );
 } else {
 return array();
 }
}

/**
 * Remove emoji CDN hostname from DNS prefetching hints.
 *
 * @param array $urls URLs to print for resource hints.
 * @param string $relation_type The relation type the URLs are printed for.
 * @return array Difference betwen the two arrays.
 */
function disable_emojis_remove_dns_prefetch( $urls, $relation_type ) {
 if ( 'dns-prefetch' == $relation_type ) {
 /** This filter is documented in wp-includes/formatting.php */
 $emoji_svg_url = apply_filters( 'emoji_svg_url', 'https://s.w.org/images/core/emoji/2/svg/' );

$urls = array_diff( $urls, array( $emoji_svg_url ) );
 }

return $urls;
}

Wer Emojis sowieso nicht nutzt, kann die Funktion auch ganz einfach komplett in WordPress deaktivieren: “Einstellungen –> Schreiben”.

Ebenso bieten einige Caching bzw. Performance Plugins die Möglichkeit zur Deaktivierung von Emojis, unter anderem auch Autoptimize.

Webhoster

Ein wichtiger Punkt, der öfter vergessen wird ist der Webhoster. Dieser speichert unter anderem IP-Adressen in Server-Logs, persönliche Daten wie z.B. Name oder E-Mail-Adressen von Kommentaren in Backups und ggf. sogar E-Mails. Diese Daten sind schon allein aus sicherheitstechnischen Gründen relevant und die Deaktivierung von Logs und Backups kommt daher nicht in Frage. Im Sinne der DSGVO handelt es sich beim Webhoster damit um einen Datenverarbeiter. In diesem Fall müsst ihr mit dem Hoster einen Vertrag zur Auftragsverarbeitung schließen. Dieser sollte direkt im Backend zur Verfügung stehen oder spätestens bei einer Anfrage beim Support erhältlich sein. Bietet der Hoster keinen Vertrag zur Auftragsverarbeitung an, solltet ihr den Anbieter wechseln.

Der Datenverarbeitungsvertrag gilt jedoch nur für das klassische Hosting. Betreibt man einen eigenen Root- oder Colocated-Server, muss kein Vertrag geschlossen werden, da der Anbieter gar keinen Zugriff auf den Server besitzt. Hier ist der Webmaster selber für eine gesetzeskonforme Konfiguration des Servers verantwortlich.

Wie sich das Recht auf Löschung der Daten mit der Notwendigkeit von Backups verträgt, ist indes noch nicht geklärt und bleibt bis auf weiteres fragwürdig. Auch hier werden wohl die Gerichte entscheiden müssen, welche Interessen wichtiger sind.

Impressum & Datenschutzerklärung

Zwingend notwendig sind ein aktuelles Impressum und eine aktuelle Datenschutzerklärung. Beide Dinge sollten vor dem 25. Mai 2018 aktualisiert werden.

Wie das Impressum muss auch die Datenschutzerklärung von jeder Unterseite deiner Webseite aus erreichbar sein. Am besten sind separate Links im Header und / oder Footer, die beispielsweise “Datenschutz” oder “Datenschutzerklärung” heißen. Außerdem muss darauf geachtet werden, dass die Links nicht von anderen Dingen, z.B. Cookie-Bannern, überblendet werden. Folgende Dinge sollten darin enthalten sein:

  • welche Daten werden erhoben und verarbeitet?
  • werden Daten an Dritte weitergegeben und falls ja in welcher Form?
  • Widerrufsrecht / Recht auf Löschung / Opt-Out für den Nutzer
  • Ansprechpartner für Fragen

Darüber hinaus muss die Datenschutzerklärung individuell auf die jeweilige Webseite angepasst sein. Ein Standard-Text reicht nicht mehr aus. Nichtsdestotrotz können natürlich Datenschutzgeneratoren genutzt werden. Hier solltet ihr aber sehr sorgfältig prüfen, ob wirklich alle Dinge abgedeckt werden, die auf deiner Webseite im Einsatz sind. Folgende Generatoren kann ich empfehlen:

Automatische Abmahnwellen können eventuell damit vorgebeugt werden, indem die Datenschützerklärung  auf “noindex” gesetzt und somit nicht von Suchmaschinen indiziert wird. Dies verhindert zumindest automatisierte Skripte daran, unzulässige Formulierungen automatisch auf deiner Webseite zu identifizieren.

Verzeichnis von Verarbeitungstätigkeiten

Die Datenschutz-Grundverordnung gibt vor, dass bei der Verarbeitung von personenbezogenen Daten ein Verzeichnis von Verarbeitungstätigkeiten geführt werden muss. Dieses ersetzt das bisherige Verfahrensverzeichnis nach dem deutschen Datenschutzrecht und ist in Artikel 30 DSGVO spezifiziert. Im Gegensatz zum bisherigen Verfahrensverzeichnis fällt das Verzeichnis von Verarbeitungstätigkeiten erheblich umfangreicher aus. Das Verzeichnis kann durch die zuständige Aufsichtsbehörde jederzeit angefordert werden. Die Möglichkeit zur Einsichtnahme durch jedermann ist nach DSGVO allerdings nicht vorgesehen.

Konkret müssen im Verzeichnis von Verarbeitungstätigkeiten alle Stellen (Prozesse, Tools, Anwendungen) dokumentiert werden, bei denen personenbezogen Daten verarbeitet werden. Außerdem muss ersichtlich sein, welche Daten genau erfasst und verarbeitet werden, für welchen Zweck die Verarbeitung stattfindet, auf welche Weise die Daten verarbeitet werden und welche technisch-organisatorischen Maßnahmen zum Schutz dieser Daten getroffen wurden. Darüber hinaus muss auch ersichtlich sein, falls Drittanbieter zum Einsatz kommen, welche Daten diese Verarbeiten und wo diese gespeichert sind. Ebenfalls wichtig ist zu wissen, wie man die Daten löscht und wie man die gespeicherten Daten bei Anfrage von Nutzern zur Verfügung stellen kann.

Es gibt einige Vorlagen, die bei der Erstellung eines Verzeichnis von Verarbeitungstätigkeiten sehr hilfreich sind. Diese dienen als guter Startpunkt und können dann mit den eigenen Daten vervollständigt werden.

Quellen

  • https://t3n.de/news/dsgvo-datenschutzgrundverordnung-aenderungen-837794/
  • https://t3n.de/news/dsgvo-daten-personenbezogen-841433/
  • https://t3n.de/news/dsgvo-einwilligungen-843918/
  • https://t3n.de/news/dsgvo-datenschutzgrundverordnung-verzeichnis-848581/
  • https://t3n.de/news/dsgvo-daten-rechtssicher-weitergeben-853271/
  • https://t3n.de/news/dsgvo-rechte-betroffenener-datenschutzerklaerung-860613/
  • https://www.borncity.com/blog/2018/04/03/hinweise-zur-datenschutz-grundverordnung-dsgvo/
  • https://www.datenschutzbeauftragter-info.de/fachbeitraege/eu-datenschutz-grundverordnung/
  • http://www.rakoellner.de/2018/02/dsgvo-checkliste-fuer-kleinere-unternehmen/
  • https://datenschmutz.net/dsgvo-checkliste-fuer-blogs/
  • https://www.reisen-fotografie.de/dsgvo-als-blogger/
  • https://lesefreude.at/dsgvo-leifaden-fuer-blogger/
  • https://www.selbstaendig-im-netz.de/recht/dsgvo-was-man-bei-eigenen-websites-und-blogs-beachten-muss/
  • http://www.blogger-ratgeber.com/dsgvo/
  • https://elbnetz.com/dsgvo-mit-wordpress/
  • https://www.webtimiser.de/so-bereitest-du-wordpress-auf-die-dsgvo-vor/
  • https://wp-ninjas.de/wordpress-dsgvo
  • https://it-service.network/blog/2018/02/27/verarbeitungsverzeichnis-nach-dsgvo/
  • https://www.activemind.de/datenschutz/dokumente/verfahrensverzeichnis
  • https://www.janalbrecht.eu/2018/05/dsgvo-haeufig-gestellte-fragen-haeufig-verbreitete-mythen/

WordPress 4.9 veröffentlicht – Die Neuerungen

WordPress Logo

Rund fünf Monate nach WordPress 4.8 wurde gestern Abend WordPress 4.9 “Tipton” veröffentlicht. Die neue Version steht als manueller Download oder über die automatische Updatefunktion zur Verfügung. Die deutsche Sprachvariante ist wie immer bereits verfügbar. Ich habe meine beiden Blogs erfolgreich auf WordPress 4.9 aktualisiert und konnte bisher keine Probleme feststellen. Nichtsdestotrotz solltet ihr vor dem Update ein Backup anfertigen!

Weiter unten findet ihr einen kurzen Überblick der wichtigsten Neuerungen. Genauere Details gibts im ausführlichen Changelog im WordPress-Codex.

  • Verbesserter Workflow im Customizer
    • Design-Entwürfe: Änderungen an Designs können geplant und zu einem bestimmten Datum automatisch veröffentlicht werden
    • Design-Vorschau: Designänderungen lassen sich per Vorschau-Link vor dem Veröffentlichen anschauen und damit z.B. an Kunden weitergeben
    • Design-Sperre: Designentwürfe lassen sich sperren und gegen Veränderung von anderen Usern schützen
    • Designentwürfe werden automatisch gespeichert
  • Verbesserungen fürs Programmieren
    • Syntaxhervorhebung und Fehlerprüfung für HTML-Widget, Design- und Plugins-Editor
    • Bei Arbeiten an Theme- und Plugin-Code wird vor dem Speichern eines Fehlers gewarnt
    • Warnmeldung vor dem ersten direkten Bearbeiten von Themes und Plugins
  • Noch mehr Aktualisierungen bei den Widgets
    • Neues Galerie-Widget
    • Integration von Bildern, Video und Audio direkt im Textwidget via neuem “Medien hinzufügen”-Button
  • Verbesserungen zum Aufbau der Website
    • Zuverlässigerer Theme-Wechsel: Widgets und Menüs bleiben auf ihren Plätzen
    • Verständlichere Anleitung beim Erstellen eines Menüs
  • Customizer JS API-Verbesserungen
  • Unterstützung von CodeMirror
  • Aktualisierung MediaElement.js auf 4.2.6 entfernt Abhängigkeit von jQuery und modernisiert Benutzeroberfläche
  • Verbesserungen für Rollen und Berechtigungen: Ermöglicht detaillierte Verwaltung von Plugins und Übersetzungsdateien

Alles in allem muss ich sagen, dass dieses Update für mich absolut keinen Mehrwert bringt und quasi überflüssig ist ;-)

WP Staging: WordPress-Websites schnell und einfach klonen

WP Staging Logo

Für Testzwecke betreibe ich eine lokale WordPress-Installation in XAMPP. Designänderungen, Anpassungen in der “functions.php” und neue Plugins werden von mir dort getestet, bevor sie anschließend in meine Live-Webseite eingebaut werden. Die Testinstallation ähnelt meinem Onlineauftritt relativ stark, ist aber keine 1:1-Kopie. Neuer Content von meiner Webseite landet dort nur sehr sporadisch alle paar Monate.

Vor kurzem bin ich auf das WordPress-Plugin WP Staging gestoßen, welches einen perfekten Klon von WordPress-Webseiten erzeugen kann. Alle Inhalte, Plugins und Einstellungen werden vollautomatisch übernommen. Nach einem kurzen Test war ich positiv überrascht und habe meine lokale Testinstallation direkt in Rente geschickt.

WordPress-Website klonen

Der Klonvorgang ist mit wenigen Klicks erledigt und kann auch ohne Hintergrundwissen schnell und einfach durchgeführt werden. Dennoch solltet ihr vor dem Start ein Backup eurer WordPress-Datenbank und -Dateien anfertigen.

Anschließend kann es direkt losgehen. Im ersten Schritt müsst ihr auf den Button “Create new staging site” klicken, um den Klonvorgang zu starten.

Auf der zweiten Seite muss zunächst ein Name für die geklonte Seite festgelegt werden. Der Name dient später auch als Unterordner für die Dateien und als Datenbank-Präfix. Darüber hinaus lassen sich bestimmte Datenbank-Tabellen und Ordner vom Klonvorgang ausschließen. Wer wirklich eine 1:1-Kopie haben möchte, muss hier nichts ändern. Ich habe lediglich die Ordner vom Backup- und vom Caching-Plugin ausgeschlossen.

Das Klonen selbst kopiert zuerst die Datenbank sowie die WordPress-Dateien und führt abschließend ein paar Anpassungen durch, damit die geklonte Webseite später lauffähig ist. Bei meinem kleinen SSDBlog war das Klonen nach wenigen Minuten abgeschlossen. Je nach Größe der Webseite kann der Klonvorgang auch länger dauern.

Sobald das Duplizieren erfolgreich beendet wurde, kann die geklonte Webseite auch schon verwendet werden.

Die geklonte Webseite kann selbstverständlich auch wieder entfernt oder bearbeitet werden. Ebenso kann sie mit Klick auf “Open” geöffnet werden. Die Webseite ist nur für Administratoren zugänglich. Eine orange Adminbar macht auf den ersten Blick klar, dass es sich um die geklonte Webseite handelt. Damit werden versehentliche Änderungen auf der falschen Website vermieden.

Fazit

Das WP Staging Plugin ist wirklich eine tolle Sache. Vor allem für Entwickler von Themes oder Plugins dürfte es sehr hilfreich sein. Aber auch zum Testen von Updates, egal ob WordPress, Plugins oder Themes ist es eine gute Wahl.

Es ist kostenlos verfügbar und macht das Klonen von WordPress-Seiten kinderleicht. Selbst Laien können damit eine perfekte 1:1-Kopie von WordPress-Webseiten erstellen, ohne auch nur eine einzige Einstellung anzupassen. Der Entwickler René Hermenau sorgt für eine stetige Weiterentwicklung des Plugins und hat schon neue Features in der Pipeline.

WP Staging: Mehr Infos und Download

Kategorien: Tutorials Wordpress

WordPress: Standardeinstellungen der Galerie anpassen

WordPress Logo

Grundsätzlich gefällt mir die in WordPress eingebaute Galerie-Funktion ganz gut. Die Bedienung lässt allerdings etwas zu wünschen übrig, denn beim Erstellen einer neuen Galerie werden jedes Mal die Standardeinstellungen geladen. Für mich heißt das, dass ich immer manuell die Links auf die Medien-Datei und die Größe der Bilder setzen muss.

Seit WordPress 4.0 existiert allerdings eine relativ einfache Möglichkeit, eigene Standardwerte für die Galerie zu definieren. Wie so oft führt der Weg über ein paar Zeilen Code in der “functions.php” eures Themes bzw. Child-Themes.

/* ----------------------------------------------------- *
* Standardeinstellungen der Galerie anpassen
/* ----------------------------------------------------- */
function my_gallery_new_defaults( $settings ) {
    $settings['galleryDefaults']['link'] = 'file';
    $settings['galleryDefaults']['size'] = 'medium';
    $settings['galleryDefaults']['columns'] = '3';
    return $settings;
}
add_filter( 'media_view_settings', 'my_gallery_new_defaults');

Neben der Verlinkung könnt ihr damit auch eigene Default-Werte für die Anzahl der Spalten sowie die Größe festlegen.

WordPress Galerie-Einstellungen

Falls ihr eine eigene standardmäßige Bildgröße gesetzt habt, könnt ihr diese Vorgabe leider nicht im Einstellungsdialog sehen. Sobald die Galerie aber mit Klick auf den Button “Galerie einfügen” erstellt wird, wird die festgelegte Größe aber gesetzt. In der Quelltext-Ansicht ist ersichtlich, dass im Shortcode die richtige Größe auftaucht. Beim Bearbeiten der gerade erstellten Galerie wird dann die richtige Größe angezeigt.

Kategorien: Tutorials Wordpress

WordPress REST-API deaktivieren

WordPress Logo
Diese Methode ist mittlerweile nicht mehr zu empfehlen, da viele Plugins ebenfalls auf die REST-API setzen und dann teilweise nicht mehr funktionieren. Hier gehts zur neuen Methode: WordPress REST-API deaktivieren reloaded

Die WordPress REST-API ist ein spannendes Thema. Grundsätzlich soll die API eine einfach zu erweiternde Schnittstelle für die Kommunikation mit anderen Programmen bereitstellen. Mit WordPress Version 4.4 wurde die grundlegende REST-API-Infrastruktur in den WordPress-Core integriert. Die gestern veröffentlichte Version 4.7 integriert sogenannte Inhalts-Endpunkte, welche bisher nur über ein separates Plugin vorhanden waren. Durch die Endpoints können andere Programme mit WordPress interagieren und bestimmte Informationen ein- oder auslesen.

Die REST-API ist unter der URL “http://www.meine-seite.de/wp-json/” erreichbar. Das Auslesen der Artikel ist beispielsweise folgendermaßen möglich: “https://www.meine-seite.de/wp-json/wp/v2/posts”.

Wer eine Webseite mit WordPress betreibt und die REST-API nicht nutzt, möchte die API vielleicht lieber deaktivieren. Die API komplett zu deaktivieren ist keine gute Idee, da mittlerweile immer mehr Funktionen im Backend die REST-API benötigen. Allerdings lässt sich die API so umbiegen, dass sie nur von angemeldeten Benutzern verwendet werden kann. Dies ist relativ einfach möglich und erfordert nur ein paar Zeilen Code, die in der “functions.php” eures Themes bzw. Child-Themes eingefügt werden müssen.

/* ------------------------------------------------------------------------- *
* Returning an authentication error if a user who is not logged in tries to query the REST API
/* ------------------------------------------------------------------------- */
function only_allow_logged_in_rest_access( $access ) {
    if( ! is_user_logged_in() ) {
        return new WP_Error( 'rest_API_cannot_access', 'Only authenticated users can access the REST API.', array( 'status' => rest_authorization_required_code() ) );
    }
    return $access;
}
add_filter( 'rest_authentication_errors', 'only_allow_logged_in_rest_access' );

remove_action( 'wp_head', 'rest_output_link_wp_head', 10 );
remove_action( 'template_redirect', 'rest_output_link_header', 11 );
remove_action( 'xmlrpc_rsd_apis', 'rest_output_rsd' );

Die unteren drei Zeilen sorgen dafür, dass der Ausgangspunkt der REST-API nicht im Quellcode, Header und unter der XMLRPC-Schnittstelle publiziert wird.

In den Kommentaren wurde ich darauf hingewiesen, dass Contact Form 7 ab Version 4.8 bei deaktivierter REST-API nicht mehr richtig funktioniert. In diesem Fall kann aber auf das Plugin “Disable REST API” zurückgegriffen werden, welches das Whitelisting bestimmter Routen erlaubt. Damit können dann die für Contact Form 7 benötigten Routen erlaubt werden, während alles andere deaktiviert ist.

Kategorien: Coding Wordpress

WordPress 4.7 veröffentlicht – Die Neuerungen

WordPress Logo

Soeben wurde WordPress 4.7 “Vaughan” veröffentlicht. Der Codename wurde nach der Jazz-Sängerin Sarah Lois Vaughan benannt. Wie immer steht die neue Version sowohl als manueller Download oder über die automatische Updatefunktion zur Verfügung. Auch die deutsche Sprachvariante ist bereits erhältlich. Weiter unten findet ihr einen kurzen Überblick der wichtigsten Neuerungen. Genauere Details gibts im ausführlichen Changelog im WordPress-Codex.

Meine beiden Blogs laufen bereits mit WordPress 4.7 und bisher konnte ich noch keine Probleme feststellen. Nichtsdestotrotz solltet ihr daran denken vor dem Update ein Backup anzufertigen!

  • neues Standard-Theme Twenty Seventeen (2017), welches vor allem für Unternehmen gedacht ist
    • responsiv
    • viele Sprachen verfügbar
    • großformatige Beitragsbilder und Video-Header möglich
    • individualisierbare Startseite mit mehreren Abschnitten
  • Auswahl der Backend-Sprache in den Benutzerprofilen möglich
  • Individuelles CSS im Customizer (neuer Menüpunkt “Zusätzliches CSS”) ermöglicht kleine Designanpassungen ohne Plugins und ohne gleich ein Child Theme erstellen zu müssen
  • Vorschaubilder zu hochgeladenen PDF-Dokumenten
  • Unterstützung für Video-Header (kein Sound und automatische Wiedergabe im Loop-Modus)
  • Menüeditor wurde leicht verbessert (Erstellung neuer Seiten möglich ohne dabei den Customizer verlassen zu müssen)
  • Buttons im visuellen Editor wurden angepasst (Blocksatz und Unterstreichung entfernt, Absatzformatierung in oder oberen Zeile, Durchstreichen sowie horizontale Linie in der unteren Zeile )
  • Suchfunktion in der Mediathek beachtet nun auch Dateinamen
  • Es gibt keinen Fallback mehr für die fehlenden alt-Texte bei Bildern
  • Erweiterung der REST API um Inhalts-Endpunkte
  • Ausweitung der Seitentemplate-Funktionalität auf alle Beitragstypen bringt noch mehr Flexibilität für die Theme-Entwicklung

Kategorien: Wordpress

WordPress von HTTP auf HTTPS umstellen

WordPress Logo

Immer mehr Webseiten und Blogs wechseln von HTTP auf HTTPS. Kein Wunder, denn das HTTPS-Protokoll ermöglicht eine verschlüsselte und sichere Kommunikation zwischen Webserver und Webbrowser. Die Verschlüsselung erfolgt mittels TLS, was oft noch unter der Vorgängerbezeichnung SSL bekannt ist. Viele Webseitenbetreiber werden sich jetzt sicherlich fragen, warum sie ihre Webseite auf HTTPS umstellen sollten. Auch ich habe mir für die Umstellung sehr lange Zeit gelassen, dies jetzt aber endlich nachgeholt. In Zeiten von Let’s Encrypt ist das meist schnell und einfach erledigt und obendrein noch kostenlos. Darüber hinaus seht ihr nachfolgend noch ein paar weitere Gründe, warum der Umstieg auf HTTPS zukünftig doch sehr sinnvoll sein kann:

  • Die Verschlüsslung einer Webseite ist mittlerweile ein Rankingfaktor bei Google.
  • Google Chrome soll ab Version 56 (geplant für Januar 2017) vor unverschlüsselten Webseiten warnen. In der Adressleiste soll zukünftig deutlich darauf hingewiesen werden, wenn eine Webseite via HTTP-Verbindung aufgerufen wird.
  • Daten von und zu der Webseite werden verschlüsselt übertragen, was vor allem beim Anmelden einen deutlichen Sicherheitsvorteil darstellt.
  • HTTPS ist einfach Stand der Technik.

Nachdem das geklärt ist, können wir mit der Umstellung starten.

1. Vorbereitungen, Backup erstellen

Bevor die Umstellung beginnt, solltet ihr unbedingt ein Backup eurer WordPress-Datenbank anfertigen. Später müssen ein paar Änderungen in der Datenbank durchgeführt werden, weshalb eine vorherige Sicherung unabdingbar ist. Es gibt einige WordPress-Plugins, welche die Aufgabe übernehmen. Ich verwende seit einigen Jahren BackWPub und bin nach wie vor hochzufrieden.

Außerdem sollte das Caching deaktiviert und der Cache gelöscht werden, sofern aktiv.

2. Zertifikat kaufen bzw. erstellen und installieren

Als nächstes müsst ihr euch das benötigte SSL-Zertifikat besorgen, auf dem Webserver einbinden und für eure Webseite HTTPS aktivieren. Das Einrichten des SSL-Zertifikats läuft bei jedem Hoster anders ab, weshalb ich nicht näher auf dieses Thema eingehe und nur ein paar Links in die Runde werfe:

Selbstverständlich könnt ihr euch auch an den Support wenden.

3. WordPress-URL anpassen

Im ersten Schritt muss die Adresse zur WordPress-Installation angepasst werden. Dazu meldet ihr euch im Backend an und wählt im Menü “Einstellungen” den Punkt “Allgemein” aus. Beide URLs müssen von “http://” auf “https://” geändert werden (siehe Screenshot):

WordPress HTTPS

Nach dem Speichern müsst ihr euch neu anmelden, was dann bereits per HTTPS geschieht (sofern bei Punkt 2 alles richtig gemacht wurde).

Anschließend solltet ihr noch eure “wp-config.php” Datei (befindet sich im Hauptverzeichnis eurer WordPress-Installation) öffnen und nachschauen, ob hier irgendwo eure alte URL eingetragen ist. Wenn sich dort beispielsweise der Eintrag

define( 'WP_CONTENT_URL', 'http://www.antary.de/wp-content' );

befindet, sollte dieser durch die neue URL ersetzt werden. Wenn in der “wp-config.php” nichts zu finden ist könnt ihr mit dem nächsten Schritt fortfahren.

4. Alle URLs in der Datenbank anpassen

In der Datenbank muss jetzt noch die alte URL durch die neue HTTPS-URL ersetzt werden. WordPress speichert nahezu jede URL mit absoluten Pfaden in der DB, was im Umkehrschluss bedeutet, dass die Anpassung an sehr vielen Stellen vorgenommen werden muss und daher nicht händisch erfolgen kann. In vielen Anleitungen wird beschrieben, wie die URL mittels phpMyAdmin angepasst werden kann. Von diesem Vorgehen solltet ihr tunlichst die Finger lassen, denn damit könnt ihr schnell die Einstellungen von Plugins zerstören oder im schlimmsten Fall eure gesamte Seite lahmlegen. Stattdessen solltet ihr zu bewährten Plugins greifen, die mit serialisierten Arrays und Objekten umgehen können.

Sehr empfehlenswert und zuverlässig ist das Plugin Better Search Replace. Alternativ könnt ihr aber auch zu Search & Replace greifen. Hier die einzelnen Schritte für Better Search Replace:

  1. Plugin installieren und aktivieren.
  2. Im Menü unter “Werkzeuge” den Punkt “Better Search Replace” aufrufen.
  3. Dort müsst ihr zuerst die alte HTTP- und anschließend die neue HTTPS-URL eintragen. Jetzt alle Tabellen markieren und die Option “Auch GUIDs ersetzen?” aktivieren. Zudem kann auf Wunsch auch ein Testlauf gemacht werden, was nie verkehrt ist.
    Better Search Replace
  4. Sofern alles passt, kann der Haken bei “Testlauf?” deaktiviert werden und die Änderungen werden durchgeführt.
  5. Damit sind alle URLs im Blog von HTTP auf HTTPS umgestellt und das Plugin kann wieder deaktiviert und deinstalliert werden.

5. Alte HTTP-URLs via .htaccess umleiten

Der nächste Schritt kann bei einigen Webhostern direkt in den Einstellungen des Webspaces bzw. des Webservers erledigt werden. Wer die Möglichkeit nicht besitzt, muss auf .htaccess ausweichen.

Eine sogenannte 301-Weiterleitung stellt sicher, dass alle Aufrufe der Webseite auf die neue HTTPS-URL umgeleitet werden. Alle alten HTTP-Links zu eurer Webseite werden damit automatisch auf die neue HTTPS-URL weitergeleitet. Wenn ihr diesen Schritt nicht umsetzt, ist eure Webseite weiterhin auch per HTTP erreichbar, was erstens nicht Sinn dieser Umstellung ist und zweitens zu Komplikationen mit Suchmaschinen führen kann, Stichwort “Duplicate Content”.

Bei einem Apache-Webserver sind für die Umleitung folgende Zeilen in der .htaccess-Datei notwendig.. Wenn möglich sollten diese ganz am Anfang stehen.

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

6. Mixed Content beseitigen

Es kann durchaus noch vorkommen, dass nicht alle Inhalte per HTTPS ausgeliefert werden. In diesem Fall erscheint in der Adresszeile links neben eurer Webseite kein grünes Schloss, sondern je nach Browser ein unterschiedlicher Warnhinweis (siehe Screenshot):

HTTPS Mixed Content Warnung

HTTPS Mixed Content Warnung (links Firefox, rechts Google Chrome)

Sollte das der Fall sein, muss geprüft werden, welche Inhalte noch per HTTP geladen werden. In Firefox und Google Chrome kann dies sehr schnell und einfach erledigt werden. Einfach die Seite mit dem “Mixed Content” aufrufen, auf der Tastatur F12 drücken und dort den Tab “Console” (Chrome) bzw. “Konsole” (Firefox) auswählen. Dort werden dann alle Inhalte aufgelistet, die noch per HTTP und damit unverschlüsselt eingebunden sind:

Mixed Content in Google Chrome Console

Diese Inhalte werden sehr oft von Widgets, Plugins oder Themes ausgeliefert, was sich jedoch in den meisten Fällen leicht anpassen lässt. Eine weitere häufige Fehlerquelle sind ältere Embeds (z.B. YouTube-Videos), die noch als HTTP-Link eingebunden wurden. Hier müsst ihr von Hand die HTTPS-URL hinterlegen

Ebenso muss die Einbindung von VG-Wort-Zählpixel geändert werden. Standardmäßig sehen die Zählpixel folgendermaßen aus:

<img src="http://vg05.met.vgwort.de/na/52c49b1dfb18f7858" alt="" width="1" height="1" />

Unabhängig von der alten Zählpixel-URL muss bei Verwendung von HTTPS folgende VG-Wort-Domain verwendet werden: “https://ssl-vg03.met.vgwort.de”. Hier ein Beispiel der neuen URL:

<img src="https://ssl-vg03.met.vgwort.de/na/52c49b1dfb18f7858" alt="" width="1" height="1" />

Genauere Infos zu diesem Thema liefern die letzten beiden Links aus meinen Quellen unten.

Wenn alle Inhalte per HTTPS eingebunden sind, wird die Webseite als sicher dargestellt. Das grüne Schloss in der Adresszeile sticht sofort ins Auge:

sichere HTTPS-Webseite

sichere HTTPS-Webseite (links Firefox, rechts Google Chrome)

7. Weitere Tätigkeiten

Abschließend solltet ihr noch die Suchmaschinen über die Umstellung auf HTTPS informieren. Wenn ihr alles wie oben beschrieben erledigt habt, sollten die Suchmaschinen die Änderung normalerweise selbstständig erkennen. Es kann aber nicht schaden die Änderung selbstständig mitzuteilen. Dies könnt ihr zum einen über die Google Search Console (ehemals Google Webmaster Tools) erledigen und zum anderen über eure “sitemap.xml”. Falls die Sitemap in eurer “robots.txt” referenziert wird, müsst ihr dort ggf. auch noch den Pfad anpassen.

Wenn ihr Google Analytics einsetzt müsst ihr des Weiteren die neue URL hinzufügen. In Google Analytics muss für die HTTPS-Variante eurer Seite eine eigene “Property” angelegt werden. Alternativ könnt ihr auch die URL der bestehenden Property anpassen. Wie das genau funktioniert müsst ihr selber herausfinden, ich wollte das nur erwähnt haben ;-)

Wer bis hier noch nicht genug hat der kann sich noch mit den “HTTP Security Headern” auseinandersetzen. Damit lässt sich die Sicherheit von Webseiten, die ausschließlich über HTTPS erreichbar sind, zusätzlich steigern. Die Webseite securityheaders.io hilft euch bei der Überprüfung dieser Security Header. Ich habe einen schönen Blogartikel zu diesem Thema gefunden, den ich euch nicht vorenthalten möchte: https://scotthelme.co.uk/hardening-your-http-response-headers/

Fazit

Alles in allem war die Umstellung aufwändiger als gedacht. Dennoch solltet ihr bei einer Umstellung alle Punkte beachten und gewissenhaft arbeiten, denn sonst kann die HTTPS-Umstellung schnell nach hinten losgehen. Wer sich die Umstellung zutraut sollte diese meiner Meinung nach auf jeden Fall angehen. Mittel- bis langfristig wird sich dies auf alle Fälle positiv bemerkbar machen.

Gerne könnt ihr mir Anmerkungen oder weitere Tipps in den Kommentaren hinterlassen.

Quellen

Kategorien: Tutorials Wordpress

WordPress absichern und schützen

WordPress Logo

Die Blog-Anwendung WordPress erfreut sich nach wie vor großer Popularität. Dank den vielen und guten Plugins kann der Funktionsumfang beinahe beliebig ausgebaut werden, weshalb WordPress heutzutage auch oft als CMS oder Shopsystem verwendet wird. Insgesamt läuft WordPress auf gut ein Viertel aller Webseiten weltweit, weshalb die Anwendung ein sehr beliebtes Angriffsziel darstellt.

Nachfolgend eine umfangreiche Sammlung vieler sinnvoller Tipps und Plugins, um WordPress sicherer zu machen.

Basisschutz

Diese einfachen Tipps sollten von allen umgesetzt werden, die WordPress einsetzen.

  • regelmäßig Updates installieren
    • vor allem von WordPress selbst
    • aber auch Plugins und Themes sollten aktualisiert werden, wenn neue Versionen bereit stehen
  • nicht verwendete Plugins und Themes löschen
  • Administrator-Account
    • wenn möglich nur ein Administrator-Account
    • Administrator-Account sollte nicht den standardmäßig vergebenen Usernamen “admin” besitzen
    • keine Artikel mit dem Administrator-Account verfassen, sondern über separate Accounts mit Redakteurs-Rechten
  • verschiedene Passwörter für WordPress Admin, Datenbank und FTP benutzen
  • “sichere” Passwörter verwenden
    • Groß- und Kleinschreibung, Zahlen sowie Sonderzeichen verwenden
    • lange Passwörter, je mehr Stellen desto besser (12 Stellen oder mehr sind gut)
  • regelmäßige und automatische Datensicherung
    • Datenbank und Dateien sichern
    • beides kann zum Beispiel einfach mit dem Plugin BackWPup erledigt werden
    • Sicherungen nicht auf dem Server aufbewahren

Erweiterter Schutz

Die Tipps hier sind deutlich aufwendiger zu realisieren und sollten nur von erfahrenen Anwendern befolgt werden, die wissen was sie tun. Für Anfänger sind die Tipps unter “Basisschutz” ausreichend.

  • Zugriffsschutz für das Backend (Admin-Bereich) mit Hilfe von .htaccess
  • TLS-Verschlüsselung für das Backend oder direkt für die gesamte Webseite einsetzen
  • XML-RPC-Schnittstelle deaktivieren / Zugriffsschutz einrichten
    • ist seit WordPress 3.5 standardmäßig aktiviert
    • Nachteil: Trackbacks von anderen Blogs können nicht mehr empfangen werden
    • XML-RPC-Schnittstelle über die “functions.php” vollständig deaktivieren
      /* Disable XML-RPC */
      add_filter( 'xmlrpc_enabled', '__return_false' );
    • alternativ Zugriff auf Dateo “xmlrpc.php” einschränken
      # bis einschließlich Apache 2.3
      # auth protection xmlrpc.php
      <Files xmlrpc.php>
      AuthType Basic
      AuthName "Restricted Admin-Area"
      AuthUserFile /pfad/zur/.htpasswd
      Require valid-user
      </Files>
      
      # ab Apache 2.4
      # auth protection xmlrpc.php
      <Files xmlrpc.php>
      AuthType Basic
      AuthName "Restricted Admin-Area"
      AuthUserFile /pfad/zur/.htpasswd
      Require valid-user
      </Files>
  • Admin Zugang auf bestimmte IP-Adressen beschränken
    # bis einschließlich Apache 2.3
    # protect wp-login.php
    <Files wp-login.php>
    Order deny,allow
    Deny from all
    Allow from [DYNAMIC.DNS.NAME]
    </Files>
    
    # ab Apache 2.4
    # protect wp-login.php
    <Files wp-login.php>
    Require host example.org
    </Files>
  • zuverlässigen Hoster verwenden
    • aktuelle Versionen von PHP und Webserver (Apache, nginx, …)
    • saubere Webserver-Konfiguration

Plugins

  • Antispam Bee (Schutz gegen Spam)
  • AntiVirus (Schutz gegen Schadcode, der über Sicherheitslücken in WordPress, Plugins oder Themes eingeschleust wurde
  • Snitch (protokolliert ausgehende Verbindungen von WordPress-Plugins)

Kategorien: Internet Wordpress

WordPress 4.6 veröffentlicht – Die Neuerungen

WordPress Logo

Vor wenigen Minuten wurde WordPress 4.6 “Pepper” veröffentlicht. Wie immer steht die neue Version bereits als manueller Download und auch über die automatische Updatefunktion zur Verfügung. Selbstverständlich ist bereits auch die deutsche Sprachvariante erhältlich. Ich habe mich bereits an das Update gewagt und konnte bisher keine Probleme feststellen. Dennoch solltet ihr vor dem Update ein aktuelles Backup anfertigen, sicher ist sicher ;-)

Nachfolgend ein kurzer Überblick der wichtigsten Neuerungen. Genauere Details findet ihr im ausführlichen Changelog im WordPress-Codex.

  • “Shiny Updates v2”, Plugins und Themes können nun ohne Neuladen der Seite aktualisiert, instlalliert und entfernt werden (bisher war nur das Update von Plugins und Themes via AJAX möglich)
  • Open Sans im Admin-Backend als Schriftart entfernt, stattdessen wird auf System-Schriftarten gesetzt
  • TinyMCE-Editor auf Version 4.4.0 aktualisiert
  • nicht gültige Links (HTTP-Status-Code 404) werden rot umrandet angezeigt
  • Wiederherstellen von gespeichertem Inhalt optimiert
  • Unterstützung von Resource Hints
  • verbesserte HTTP-API (fügt Header unabhängig von Groß- und Kleinschreibung hinzu, erlaubt parallele HTTP-Anfragen und unterstützt internationalisierte Domain-Namen)
  • Aktualisierung von JavaScript-Bibliotheken (Masonry 3.3.2, imagesLoaded 3.2.0, MediaElement.js 2.22.0, TinyMCE 4.4.1 und Backbone.js 1.3.3)

Kategorien: Wordpress

WordPress 4.5 veröffentlicht – Die Neuerungen

WordPress Logo

Soeben wurde WordPress 4.5 “Coleman” veröffentlicht. Der Codename bezieht sich auf den Jazzmusiker Coleman Hawkins. Die neue Version steht sowohl per Download als auch über die automatische Updatefunktion zur Verfügung und ist wie immer auch bereits in der deutschen Variante erhältlich. Bei mir lief das automatische Update ohne Probleme durch. Denkt daran: Vor einem Update solltet ihr immer ein aktuelles Backup anfertigen.

Nachfolgend ein kurzer Überblick der wichtigsten Neuerungen. Genauere Details findet ihr im ausführlichen Changelog im WordPress-Codex.

  • neue „Inline“-Verlinkung im Editor
  • neue Formatierungs-Kürzel im Editor, die mit WordPress 4.3 eingeführt wurden
    • — für eine Trennlinie (<hr />)
    • `code` für  <code>code</code>
  • Möglichkeit das eingesetzte Theme im Anpassen-Menü auf “Responsiveness” zu testen, dazu stehen die drei Ansichten Desktop, Tablet und Mobil zur Verfügung
  • Webseiten-Logo kann über das Anpassen-Menü eingebunden werden
  • Oberfläche zum Moderieren von Kommentaren wurde übersichtlicher gestaltet
  • Einloggen auch mit E-Mail-Adresse und Passwort möglich (bisher nur mit Benutzername und Passwort)
  • “Responsive Bilder” (eingeführt in WordPress 4.4) werden nun bis zu 50% schneller geladen
  • Aktualisierung der JavaScript-Bibliotheken (jQuery 1.12.3, jQuery Migrate 1.4.0, Backbone 1.2.3, und Underscore 1.8.3)
  • “wp_add_inline_script()” ermöglicht registrierten Scripts zusätzlichen Code hinzuzufügen
  • Embed-Templates können über die Template-Hierarchie direkt durch Themes überschrieben werden

Kategorien: Wordpress

WordPress Datenbank entschlacken Teil 2

WordPress Logo

Vor mehr als fünf Jahren habe ich in meinem Artikel “WordPress Datenbank entschlacken” gezeigt, wie ihr eure WordPress-Datenbank relativ einfach und schnell aufräumen und verkleinern könnt. Nur als Anmerkung: Der Artikel ist nach wie vor aktuell und die beschriebene Vorgehensweise unverändert anwendbar.

Heute habe ich bei Horst gesehen, dass eine weitere Stelle innerhalb der WordPress Datenbank Optimierungspotenzial bietet. In der “wp_options”-Tabelle werden sogenannte Transients erzeugt, die sich mit der Zeit anhäufen und die Datenbank füllen. Dabei handelt es sich um zwischengespeicherte Werte von Plugins und WordPress selbst. Ab WordPress 3.7 sollen abgelaufene Transients bei einem Datenbank-Upgrade angeblich selbst entfernt werden. Allerdings scheint dies je nach Implementierung in den Plugins nicht so gut wie erwartet zu funktionieren, weshalb eine Menge Einträge existieren, die nicht mehr benötigt werden.

Bevor ihr startet, solltet ihr unbedingt ein Backup der Datenbank anlegen. Sicher ist sicher. Anschließend müsst ihr folgenden SQL-Befehl ausführen, um die Transients zu löschen:

DELETE FROM `wp_options` WHERE `option_name` LIKE ('%\_transient\_%')

Am einfachsten dürfte dies mit phpMyAdmin zu bewerkstelligen sein.

Kategorien: Tutorials Wordpress

WordPress 4.4 – Die Neuerungen

WordPress Logo

WordPress 4.4 mit dem Codenamen Clifford wurde heute pünktlich zum geplanten Releasetermin veröffentlicht. Wie immer steht auch bereits die deutsche Version als automatisches Update zur Verfügung. Vor dem Update solltet ihr ein Backup erstellen. Die nützlichen Neuerungen für Normaluser halten sich bei Version 4.4 in Grenzen, was ebenso bereits bei WordPress 4.3 der Fall war.

Nachfolgend ein kurzer Überblick. Genauere Details findet ihr im ausführlichen Changelog im WordPress-Codex.

  • neues Standard-Theme “Twenty Sixteen” (mobile-first-Blog-Theme) (wird nur bei Neuinstallationen installiert)
  • native Unterstützung für “Responsive Images”
    • funktioniert unabhängig vom Theme und vom Endgerät des Nutzers
    • wird über die neuen Attribute “srcset” und “sizes” realisiert
    • neue Bildgröße “medium_large” mit einer Breite von 768 Pixeln
  • Einbettung von WordPress-Beiträgen möglich (Achtung, könnte von Content-Dieben ausgenutzt werden, daher empfehle ich eine Deaktivierung via Plugin)
  • oEmbed-Unterstützung für Cloudup, Reddit-Kommentaren, ReverbNation, Speaker Deck und VideoPress
  • veränderte Reihenfolge im Kommentarformular, Kommentarfeld am Anfang
  • Implementierung der REST-API in den WordPress-Core
  • neue Objekte “WP_Term”, “WP_Comment” und “WP_Network”
  • Metadaten für Taxonomie-Begriffe möglich
  • kompatibel zu PHP 7

Kategorien: Wordpress