Protezione dai tentativi di bypass del DNS tramite il token sicuro “x-ch-no-bypass”.
La presente guida offre una panoramica ed esempi su come proteggersi dai tentativi di bypass del DNS. L'implementazione dell'intestazione x-ch-no-bypass non è obbligatoria per nessuna delle integrazioni di CrowdHandler; tuttavia, tale misura garantisce un ulteriore livello di verifica dell'utente ed è pertanto consigliata.
A quali tipi di integrazione si riferisce questo articolo?
Cosa si intende per "tentativi di bypass del DNS"?
L'integrazione di CrowdHandler nella CDN di vostra scelta rende difficile aggirare i controlli di CrowdHandler; tuttavia, gli utenti esperti in grado di individuare le informazioni di rete associate alla vostra infrastruttura web potrebbero riuscire a instradare il proprio traffico aggirando l'endpoint della vostra CDN, eludendo così tutte le misure di protezione da essa offerte, compresa l'integrazione con CrowdHandler.
Come
Una volta configurata, l'integrazione con CrowdHandler aggiungerà un'intestazione denominata "x-ch-no-bypass" a tutte le richieste inoltrate alla tua applicazione. Il valore dell'intestazione sarà il tuo token di sicurezza "no-bypass". Con un minimo di codice, puoi configurare la tua applicazione web in modo che verifichi che le richieste siano inviate con questa intestazione e questo token, assicurandoti che solo gli utenti che sono stati controllati da CrowdHandler possano accedere alla tua applicazione.
Dove posso trovare il mio token?
Se si utilizza l'integrazione DNS, il token è disponibile nella console di amministrazione di CrowdHandler, nella schermata delle impostazioni del dominio dell'applicazione web che si intende proteggere. Il valore del token sarà memorizzato nel campo "No-Bypass Token".
Per le altre integrazioni CDN (Akamai, Cloudflare e CloudFront), le rispettive guide all'installazione ti spiegheranno come configurare il tuo token anti-bypass.
di integrazione#
La verifica della presenza e del valore dell'intestazione di richiesta `x-ch-no-bypass` può essere facilmente effettuata nella maggior parte dei linguaggi di programmazione e dei server web. Di seguito sono riportati alcuni esempi di implementazione per vari linguaggi e server web diffusi.
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)
da django.http import HttpResponseForbidden
da 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!")