Schutz vor DNS-Bypass-Versuchen mithilfe des sicheren „x-ch-no-bypass“-Tokens.

Einleitung

Dieser Leitfaden bietet einen Überblick und Beispiele dafür, wie Sie sich vor DNS-Bypass-Versuchen schützen können. Die Implementierung des „x-ch-no-bypass“-Headers ist für keine der CrowdHandler-Integrationen erforderlich; sie bietet jedoch eine zusätzliche Ebene der Benutzerauthentifizierung und wird daher empfohlen.

Für welche Integrationstypen ist dieser Artikel relevant?

Akamai

Cloudflare

CloudFront

DNS

Was versteht man unter DNS-Umgehungsversuchen?

Die Integration von CrowdHandler in das CDN Ihrer Wahl erschwert es, die CrowdHandler-Prüfungen zu umgehen. Versierte Nutzer, die in der Lage sind, Netzwerkinformationen zu Ihrer Webinfrastruktur aufzuspüren, könnten jedoch ihren Datenverkehr um Ihren CDN-Endpunkt herumleiten und so alle Schutzmaßnahmen umgehen, die dieses bietet – einschließlich Ihrer CrowdHandler-Integration.

So funktioniert es

Nach der Konfiguration fügt Ihre CrowdHandler-Integration allen an Ihre Anwendung weitergeleiteten Anfragen einen Header namens „x-ch-no-bypass“ hinzu. Der Wert dieses Headers ist Ihr sicheres No-Bypass-Token. Mit nur minimalem Programmieraufwand können Sie Ihre Webanwendung so konfigurieren, dass sie überprüft, ob Anfragen mit diesem Header und diesem Token gesendet werden, und so sicherstellen, dass nur Benutzer, die von CrowdHandler überprüft wurden, Zugriff auf Ihre Anwendung erhalten.

Wo finde ich mein Token?

Wenn Sie die DNS-Integration nutzen, finden Sie das Token in der CrowdHandler-Verwaltungskonsole auf dem Bildschirm mit den Domäneneinstellungen der Webanwendung, die Sie schützen möchten. Der Token-Wert wird im Feld „No-Bypass-Token“ gespeichert.

Für andere CDN-Integrationen (Akamai, Cloudflare und CloudFront) finden Sie in den jeweiligen Installationsanleitungen Anweisungen zur Einrichtung Ihres No-Bypass-Tokens.

Beispiele für die Integration

Die Überprüfung, ob der Request-Header „x-ch-no-bypass“ vorhanden ist und welchen Wert er hat, lässt sich in den meisten Programmiersprachen und auf den meisten Webservern problemlos durchführen. Im Folgenden finden Sie einige Implementierungsbeispiele für verschiedene gängige Sprachen und Webserver.

Apache

RewriteEngine On

# block if request header x-ch-no-bypass value isn't matched
RewriteCond %{HTTP:x-ch-no-bypass} !^(YOURTOKENVALUE)$
RewriteRule ^ - [F]

Nginx

location / {

    if ($http_x_ch_no_bypass != "YOURTOKENVALUE") {
        return 403;
    }

    proxy_pass http://app:3000/;
}

Express.js

app.get('/', (req, res) => {
    if (req.header('x-ch-no-bypass') !== "YOURTOKENVALUE") {
        res.status(403).send("Sorry! You can't see that.")
    }
    res.sendFile(__dirname + "/views/index.html");
})

PHP

function getRequestHeaders() {
    $headers = array();
    foreach($_SERVER as $key => $value) {
        if (substr($key, 0, 5) <> 'HTTP_') {
            continue;
        }

        $header = str_replace(' ', '-', ucwords(str_replace('_', ' ', strtolower(substr($key, 5)))));
        $headers[$header] = $value;
    }
    return $headers;
}

$headers = getRequestHeaders();

if($headers['X-Ch-No-Bypass'] != "YOURTOKENVALUE") {
    header("HTTP/1.1 403 Forbidden" );
    exit;
}

Python (Django)

from django.http import HttpResponseForbidden
from django.http import HttpResponse

def index(request):
    chBypassKey = request.META.get('HTTP_X_CH_NO_BYPASS')
    if (chBypassKey) != "YOURTOKENVALUE" :
        return HttpResponseForbidden()
    else :
        return HttpResponse("Hello world!")