Erstellen einer Sperrliste für Netzbetreiber mit Twilio Lookup

September 01, 2021
Autor:in:
Prüfer:in:
Mia Adjei
Twilion

Erstellen einer Sperrliste für Netzbetreiber mit Twilio Lookup


Hallo und Danke fürs Lesen! Dieser Blogpost ist eine Übersetzung von Build a carrier block list with Twilio Lookup. Während wir unsere Übersetzungsprozesse verbessern, würden wir uns über Dein Feedback an help@twilio.com freuen, solltest Du etwas bemerken, was falsch übersetzt wurde. Wir bedanken uns für hilfreiche Beiträge mit Twilio Swag :)

Betrüger können die Telefonverifizierung oder Zwei-Faktor-Authentisierung ins Visier nehmen, um den SMS-Verkehr künstlich zu erhöhen. Bestimmte Netzbetreiber lassen dies zu, wissentlich oder unwissentlich, und die Betrüger verdienen an diesem erhöhten Datenverkehr Geld. Dies könnte zu einem höheren als erwarteten Twilio-Datenverkehr führen.

Unsere Verify-API zum Senden einmaliger Sicherheitscodes beinhaltet umfassende Mechanismen zur Betrugsbekämpfung. Allerdings kann keine anbieterseitige Lösung eine absolute Wirksamkeit gegen ausgeklügelte Angreifer garantieren, weshalb wir zur Kundenbeteiligung bei der Verhinderung von Angriffen raten.

Glücklicherweise kann die Lookup-API von Twilio Netzbetreiber erkennen, und wir können damit bekannte Betrüger herausfiltern, bevor wir eine SMS-Verifizierung senden.

Hier ist ein kurzer Ausschnitt aus einer Beispiel-Sperrliste:

const accountSid = process.env.TWILIO_ACCOUNT_SID;
const authToken = process.env.TWILIO_AUTH_TOKEN;
const client = require("twilio")(accountSid, authToken);

// hard coded for demo purposes only
const block = ["12301", "12302"];

client.lookups
 .phoneNumbers("+15108675310")
 .fetch({type: ["carrier"]})
 .then((resp) => {
   const mccmnc = resp.carrier.mobile_country_code + resp.carrier.mobile_network_code
   if (block.includes(mccmnc)) {
     // block or add additional checks
     console.log("blocked!");
   } else {
     // proceed with sending one time passcode
     console.log("allowed!");
   }
 });

Der Rest des Beitrags befasst sich mit dem Erstellen dieser Lösung mit der Twilio Lookup-API.

Definieren eines Netzbetreibers in Code: MCC und MNC

Die Kombination aus Mobile Country Code (MCC) und Mobile Network Code (MNC) ist weltweit einzigartig und wird zur Identifizierung von Netzbetreibern weltweit verwendet. Hinweis: MCC und MNC sind für Festnetznummern nicht verfügbar.

Diese Daten werden in einer Netzbetreiber-Lookup-Antwort zurückgegeben, wenn verfügbar:

{
  "caller_name": null,
  "carrier": {
    "error_code": null,
    "mobile_country_code": "310",
    "mobile_network_code": "456",
    "name": "verizon",
    "type": "mobile"
  },
  "country_code": "US",
  "national_format": "(510) 867-5310",
  "phone_number": "+15108675310",
  "add_ons": null,
  "url": "https://lookups.twilio.com/v1/PhoneNumbers/+15108675310"
}

Ein Angreifer sendet oft Anfragen an eine Reihe von aufeinander folgenden Nummern mit derselben Vorwahl. Achte also auf Datenverkehr mit ungeprüfter Verifizierung, der über dieselbe Vorwahl kommt. Wenn du Vorwahlen sperren möchtest, lohnt es sich, die Sperrung nach einiger Zeit wieder aufzuheben, um legitimen Datenverkehr erneut zuzulassen.

Eine Liste aller MCC-MNCs findest du auf dieser Website:https://www.mcc-mnc.com/ und hier eine Liste von Handy-Vorwahlen.

Voraussetzungen für das Erstellen einer Erkennungsliste für Netzbetreiber

Wenn du mitprogrammieren möchtest, musst du folgende Schritte ausführen:

Schritt 1:Registrieren oder Anmelden bei deinem Twilio-Konto

Schritt 2: Installieren von Node JS https://nodejs.org/en/download

Schritt 3: Installieren der Twilio CLI (weitere Informationen)

npm install -g twilio-cli

Schritt 4: Installieren des Serverless CLI-Plug-in

twilio plugins:install @twilio-labs/plugin-serverless@1.9.0

Schritt 5: Anmelden bei der CLI mit den Anmeldeinformationen für dein Twilio-Konto

twilio login

Herunterladen der Lookup-Startvorlage

Klone mithilfe der CLI die internationale Telefoneingabevorlage aus dem Twilio CodeExchange:

twilio serverless:init lookup-block-list --template=international-telephone-input && cd lookup-block-list

Öffne die .env-Datei und stelle sicher, dass deine Anmeldeinformationen für das Twilio-Konto (ACCOUNT_SID und AUTH_TOKEN) ausgefüllt wurden. Du findest deine Anmeldedaten in der Twilio-Konsole. Du kannst die App starten, indem du folgenden Befehl ausführst:

twilio serverless:start

Öffne http://localhost:3000/index.html in einem Browser. Du solltest in der Lage sein, deine Telefonnummer einzugeben, und sie im E.164-Format sehen:

Telefonnummer im e.164-Format

Die Anwendung erweist sich bereits als sehr praktisch, indem sie international formatierte Nummern akzeptiert und sie in das Standardformat E.164 konvertiert. Die Lookup-API überprüft dann, ob die Nummer gültig ist oder nicht. Wenn du versuchst, nur 12345 oder eine andere ungültige Telefonnummer einzugeben, erhältst du eine Fehlermeldung.

Hinzufügen einer Sperrliste zum Registrierungsformular

Vermeide die Hartcodierung dieser Werte in einer Produktionsumgebung. Wir empfehlen, die Liste aus einem externen Speicher wie einer Konfigurationsdatei oder einer Datenbank zu laden, damit sie einfacher aktualisiert werden kann, ohne dass der Code selbst geändert werden muss.

Um eine Sperrliste hinzuzufügen, öffnest du die Datei functions/lookup.js und fügst die folgende Zeile nach const client = … ein:

const block = ["12301", "12302"];

Diese Liste verwendet Mobile Country Codes (MCC) und Mobile Network Codes (MNC) zur Identifizierung von Netzbetreibern, die auch von der Lookup-API verwendet werden. Unsere Liste ist fiktiv, aber du kannst mihilfe dieser Website MCC-MNC-Kombinationen ermitteln. Um deine Verifizierung nach verschiedenen MCC+MNCs aufzuteilen, beginne mit der Nachverfolgung dieser Details, damit du mehr Informationen darüber erhältst, welchen Netzbetreibern du mehr oder weniger vertrauen kannst.

Bei der Betrachtung des Rests der Funktion stellst du sicher fest, dass wir die Antwort der Lookup-API nicht verwenden. Um die Antwort zu nutzen und den zurückgegebenen Netzbetreiber zu erfassen, ersetzen wir den aus 5 Zeilen bestehenden Code, der mit response.setStatusCode(200); beginnt, durch:

const mccmnc = resp.carrier.mobile_country_code + resp.carrier.mobile_network_code
if (block.includes(mccmnc)) {
 response.setStatusCode(401);
 response.setBody({
   success: false,
   error: "Carrier not allowed.",
 });
 return callback(null, response);
} else {
 response.setStatusCode(200);
 response.setBody({
   success: true,
 });
 return callback(null, response);
}

Rufe abschließend assets/index.html auf und aktualisiere Zeile 73, um die Fehlermeldung der Funktion zu melden:

error.innerHTML = json.error;

Stelle sicher, dass das Projekt mit twilio serverless:start ausgeführt wird, rufe http://localhost:3000/index.html auf und teste es! Versuche dann, die MCC-MNC-Kombination deiner Handynummer zur Sperrliste hinzuzufügen, um die Fehlermeldung „Carrier not allowed“ anzuzeigen.

Alternativen zur Sperrung von Netzbetreibern

Die komplette Sperrung eines Netzbetreibers birgt das Risiko, auch legitimen Datenverkehr zu blockieren. Du könntest die Lookup-API-Antwort verwenden, um Nummern mit höherem Risiko zu erkennen und Schutzmaßnahmen wie reCAPTCHAs hinzuzufügen, um Bots zu verhindern.

Du kannst Verifizierungen aus bestimmten Ländern auch mit einer ähnlichen Methode, die in diesem Blogbeitrag beschrieben wird, blockieren oder zulassen.

Du könntest auch den WhatsApp-Kanal anstelle von SMS zum Senden von Verifizierungscodes verwenden (demnächst mit der Verify-API möglich).

Was tun, wenn du betrügerische Aktivitäten in deinem Konto vermutest?

Bei Messaging-Missbrauch in der Authy-API oder Verify-API kannst du eine E-Mail an fraud@twilio.com senden. Bitte mache in deiner Nachricht die folgenden Angaben:

Account SID:
Product Type (Authy or Verify):
Date/time Range:
To/Recipient Country:
Workspace SID:
Description of Activity:

Andere Verwendungszwecke für die Lookup-API

Du kannst die Lookup-API auch für die Zulassung oder Erkennung bestimmter Länder verwenden. Das ist eine weitere Möglichkeit, Betrug zu verhindern und die Oberfläche deiner Anwendung zu verringern.

Lookup kann auch dazu verwendet werden, die Leitungsart zu ermitteln, um Handynummern, Festnetznummern und VoIP-Nummern zu unterscheiden.

Nach der Implementierung von Lookup möchtest du Telefonnummern natürlich mit der Twilio Verify-API verifizieren. Hier sind einige weitere Ressourcen für die Kontosicherheit, die dir gefallen könnten:

Ich bin gespannt, was du mit Twilio entwickelst und sicherst!