Trick # 586 | Dieser Beitrag beinhaltet 1080 Wörter. – Geschätzte Lesezeit: ca. 6 Minuten.
Stehen bei Ihnen auch die Sommerferien ins Haus? Reisen Sie in ein fernes Land? Der Gedanke daran hat mich zu diesem Beitrag inspiriert: Wir richten ein Geo-Blocking für die WordPress-Website ein. Ist ganz einfach zu machen.
GeoBlocking definiert, aus welchen Ländern auf Ihre Website zugegriffen werden darf. Das kann aus Sicherheitsgründen sinnvoll sein, manchmal auch aus rechtlichen Gründen. Zum Beispiel kann ein Webradio, welches die Urheberrechte nur in der Schweiz abrechnet, in Probleme geraten, wenn das Musikprogramm in anderen Ländern abgerufen werden kann.
Ich selber habe mit Geo-Blocking eine Website abgesichert, welche dem Informationsaustausch eines nationalen Schweizer Verbandes dient. Die Inhalte sollen zwar einfach verfügbar sein, aber nur beschränkt abgerufen werden können. Da ist Geo-Blocking (als Ergänzung zum Login-Zwang) eine wirklich gute und simple Lösung.
Egal, welche Gründe für ein Geo-Blocking sprechen: wir zeigen Ihnen eine einfache Möglichkeit. Hier vier Varianten:
Option #1: Zugriffe nur von der Schweiz aus erlauben
Mit dem ersten Geo-Blocking erlauben wir nur Zugriffe aus der Schweiz.
Den folgenden Code kopieren Sie hierfür in die Datei functions.php. Diese ist im WordPress-Backend zu finden unter Design/Theme-Datei-Editor:
add_action('init', 'restrict_by_country');
function restrict_by_country() {
$allowed_country = 'CH'; // Schweiz – UNBEDINGT AN IHRE GEGEBENHEITEN ANPASSEN
$user_ip = $_SERVER['REMOTE_ADDR'];
$geo_data = json_decode(file_get_contents("http://www.geoplugin.net/json.gp?ip={$user_ip}"));
if ($geo_data->geoplugin_countryCode !== $allowed_country) {
wp_die('Access restricted to Switzerland only.');
}
}Tipp: Vielleicht mit Vorsicht zu geniessen: Der Beispielsatz in Zeile 8: «Access restricted to Switzerland only». Sie geben damit einen Hinweis, wie man sein VPN konfigurieren muss, um dann doch Zugriff zu erhalten. Etwas neutraleres wäre vielleicht klug «Website not accessible [optional: from your country].
Option #2: Zugriffe aus dem deutschsprachigen Raum zulassen
Hier lässt Geo-Blocking neben der Schweiz auch Deutschland und Österreich als Zugriffsländer zu.
Den folgenden Code kopieren Sie in die Datei functions.php. Diese ist im WordPress-Backend zu finden unter Design/Theme-Datei-Editor:
add_action('init', 'restrict_by_country');
function restrict_by_country() {
// Liste der erlaubten Länder (ISO-Ländercodes)
$allowed_countries = ['CH', 'DE', 'AT']; // Schweiz, Deutschland, Österreich
// Besucher-IP-Adresse abrufen
$user_ip = $_SERVER['REMOTE_ADDR'];
// GeoIP-Daten von geoplugin abrufen
$geo_data = json_decode(file_get_contents("http://www.geoplugin.net/json.gp?ip={$user_ip}"));
// Prüfen, ob der Ländercode in der Liste der erlaubten Länder ist
if (!in_array($geo_data->geoplugin_countryCode, $allowed_countries)) {
wp_die('Zugriff nur aus deutschsprachigen Ländern erlaubt.');
}
}Hinweis zu Zeile 14: Auch da lässt sich die Liste der erlaubten Länder natürlich noch ein wenig verschleiern. Siehe Tipp zu Option #1.
Option #3: Europa mit Geo-Blocking legitimieren
Die Länderliste wird jetzt noch länger und umfasst die europäischen Länder.
Den folgenden Code kopieren Sie in die Datei functions.php. Diese ist im WordPress-Backend zu finden unter Design/Theme-Datei-Editor:
add_action('init', 'restrict_by_continent');
function restrict_by_continent() {
// Liste der europäischen Ländercodes (ISO 3166-1 alpha-2)
$european_countries = [
'AL', 'AD', 'AM', 'AT', 'AZ', 'BY', 'BE', 'BA', 'BG', 'HR', 'CY', 'CZ',
'DK', 'EE', 'FI', 'FR', 'GE', 'DE', 'GR', 'HU', 'IS', 'IE', 'IT', 'KZ',
'LV', 'LI', 'LT', 'LU', 'MT', 'MC', 'MD', 'ME', 'NL', 'NO', 'PL', 'PT',
'RO', 'RU', 'SM', 'RS', 'SK', 'SI', 'ES', 'SE', 'CH', 'TR', 'UA', 'GB', 'VA'
];
// Besucher-IP-Adresse abrufen
$user_ip = $_SERVER['REMOTE_ADDR'];
// GeoIP-Daten von geoplugin abrufen
$geo_data = json_decode(file_get_contents("http://www.geoplugin.net/json.gp?ip={$user_ip}"));
// Prüfen, ob der Ländercode in der Liste der europäischen Länder ist
if (!in_array($geo_data->geoplugin_countryCode, $european_countries)) {
wp_die('Zugriff nur aus Europa erlaubt.');
}
}Der sehr transparente Hinweis auf Zeile 19 kann gewiefte Cracker verleiten, die eigene Herkunft zu verschleiern. Vielleicht ist eine neutralere Fehlermeldung (wie im Tipp bei Option #1) sinnvoll.
Option #4: Bestimmte Länder ausschliessen – alle anderen zulassen
Ja, es geht natürlich auch umgekehrt: wenn die Länderliste sehr lang wird, ist es vielleicht schlauer, einige Länder auszuschliessen und alle anderen zuzulassen. Auch das geht. Mit dem folgenden Code schliessen wir eine Website für den Zugriff aus der Schweiz.
Den folgenden Code kopieren Sie in die Datei functions.php. Diese ist im WordPress-Backend zu finden unter Design/Theme-Datei-Editor:
add_action('init', 'block_access_from_switzerland');
function block_access_from_switzerland() {
// Der ISO-Code für die Schweiz ist 'CH'
$blocked_country = 'CH';
// Besucher-IP-Adresse abrufen
$user_ip = $_SERVER['REMOTE_ADDR'];
// GeoIP-Daten von GeoPlugin abrufen
$geo_data = json_decode(file_get_contents("http://www.geoplugin.net/json.gp?ip={$user_ip}"));
// Prüfen, ob der Benutzer aus der Schweiz kommt
if ($geo_data->geoplugin_countryCode === $blocked_country) {
wp_die('Zugriff aus der Schweiz ist nicht erlaubt.');
}
}Sie sehen: Geo-Blocking ist wahrlich keine «Rocket-Science» – oder?
Werbung


