Questa pagina descrive come rilevare e prevenire i takeover dell'account (ATO) utilizzando reCAPTCHA.
Gli attacchi ATO si verificano in genere quando un malintenzionato invia richieste per accedere agli endpoint API utilizzando credenziali ottenute da una violazione dei dati, note anche come dump di password. Questo tipo di attacco può avere successo, anche se il dump delle password proviene da un sito non correlato, perché le persone tendono a riutilizzare le password su più account. Questo tipo di attacco non influisce sugli utenti che praticano una corretta igiene delle password, ad esempio utilizzando un gestore delle password.
Prima di iniziare
Prepara il tuo ambiente per Google Cloud Fraud Defense.
Rilevare e prevenire i takeover degli account
Con reCAPTCHA, puoi rilevare e prevenire gli attacchi ATO utilizzando una delle seguenti opzioni:
Utilizzare la casella di controllo Non sono un robot
L'aggiunta della casella di controllo Non sono un robot al tuo sito è il modo più rapido e semplice per fornire una protezione contro gli attacchi ATO senza dover integrare funzionalità aggiuntive, come la verifica tramite SMS o email. Per un malintenzionato, violare questa protezione ha un costo e questa opzione potrebbe essere sufficiente per alcuni siti.
Aggiungi la casella di controllo "Non sono un robot" alle tue pagine web.
Il seguente codice è un esempio reale di una pagina di accesso protetta dalla casella di controllo:
function onSuccess(token) {
// The token is included in the POST data in the g-recaptcha-response
// parameter. The backend must create an Assessment with the token
// and verify the token is valid.
console.log(token);
}<form id="loginForm" action="?" method="POST">
Username: <input type="text" name="username"/><br/>
Password: <input type="password" name="password"/><br/>
<div class="g-recaptcha" data-sitekey="reCATCHA_sitekey"
data-action="account_login" data-callback="onSuccess"></div>
</form><script src="https://www.google.com/recaptcha/enterprise.js" async defer></script>
Puoi sperimentare con questo codice in JSFiddle facendo clic sull'icona <> nell'angolo in alto a destra della finestra del codice.
<html>
<head>
<title>Account Login - Checkbox</title>
<script src="https://www.google.com/recaptcha/enterprise.js" async defer></script>
<script>
function onSuccess(token) {
// The token is included in the POST data in the g-recaptcha-response
// parameter. The backend must create an Assessment with the token
// and verify the token is valid.
console.log(token);
}
</script>
</head>
<body>
<form id="loginForm" action="?" method="POST">
Username: <input type="text" name="username"/><br/>
Password: <input type="password" name="password"/><br/>
<div class="g-recaptcha" data-sitekey="6LeAkOgUAAAAACcy3uY6N9H9SJMS27n3Zx2OOnYK"
data-action="account_login" data-callback="onSuccess"></div>
</form>
</body>
</html>Utilizzare i punteggi e le sfide personalizzate
Per proteggerti dagli ATO, utilizza le chiavi basate sul punteggio reCAPTCHA e le sfide di autenticazione a più fattori (MFA), come le sfide via email e SMS in cui vengono inviati codici unici (OTP) all'utente.
Per utilizzare chiavi basate sul punteggio e sfide personalizzate, valuta le seguenti opzioni:
Installa chiavi basate sul punteggio per rilevare l'automazione negli attacchi ATO su larga scala.
Per installare chiavi basate sul punteggio sulle pagine web, vedi Installare chiavi basate sul punteggio sulle pagine web.
Per installare chiavi basate sul punteggio nelle applicazioni mobile, consulta Integrare reCAPTCHA con le app per Android o Integrare reCAPTCHA con le app per iOS.
Utilizza l'autenticazione a più fattori per verificare la proprietà dell'account al momento dell'accesso o per azioni sensibili.
Per saperne di più, consulta Configurare l'autenticazione a più fattori.
A seconda del caso d'uso, puoi utilizzare MFA da sola o con chiavi basate sul punteggio. Ad esempio, potresti preferire utilizzare le richieste di MFA solo per i punteggi inferiori a una determinata soglia per ridurre l'attrito.
Il seguente esempio mostra come integrare le chiavi basate sul punteggio nello scenario di accesso.
function submitForm() {
grecaptcha.enterprise.ready(function() {
grecaptcha.enterprise.execute(
'reCAPTCHA_site_key', {action: 'account_login'}).then(function(token) {
document.getElementById("token").value = token;
document.getElementByID("loginForm").submit();
});
});
}<form id="loginForm" action="?" method="POST"> Username: <input type="text" name="username"/><br/> Password: <input type="password" name="password"/><br/> <input type="hidden" id="token" name="recaptcha_token"/> <button onclick="submitForm()">Login</button> </form>
<script src="https://www.google.com/recaptcha/enterprise.js" async defer></script>
Puoi sperimentare con questo codice in JSFiddle facendo clic sull'icona <> nell'angolo in alto a destra della finestra del codice.
<html>
<head>
<title>Account Login - Score</title>
<script src="https://www.google.com/recaptcha/enterprise.js" async defer></script>
<script>
function submitForm() {
grecaptcha.enterprise.ready(function() {
grecaptcha.enterprise.execute(
'reCAPTCHA_site_key', {action: 'account_login'}).then(function(token) {
document.getElementById("token").value = token;
document.getElementByID("loginForm").submit();
});
});
}
</script>
</head>
<body>
<form id="loginForm" action="?" method="POST">
Username: <input type="text" name="username"/><br/>
Password: <input type="password" name="password"/><br/>
<input type="hidden" id="token" name="recaptcha_token"/>
<button onclick="submitForm()">Login</button>
</form>
</body>
</html>Passaggi successivi
- Per scoprire di più su altre funzionalità di protezione dell'account, vedi Funzionalità di protezione degli account utente.