Friday, 8 October, 2021 UTC


Summary


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 [email protected] 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/[email protected] 
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:
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 [email protected] 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:
  • Dokumentation zur Lookup-API
  • Best Practices für die Validierung von Telefonnummern während der Registrierung neuer Benutzer
  • Best Practices für die Verwaltung von Logik für Wiederholungsversuche mit SMS 2FA
  • Senden einer SMS-OTP in 5 Minuten
Ich bin gespannt, was du mit Twilio entwickelst und sicherst!