Bereik

Grow

Manage

Automate

Bereik

Grow

Manage

Automate

IP-whitelisting voor API-sleutels

E-mail

1 min read

IP-whitelisting voor API-sleutels

E-mail

1 min read

IP-whitelisting voor API-sleutels

Er zijn veel manieren om authenticatie op te bouwen in een API-first product zoals SparkPost, en de manier die we vroeg hebben gekozen is het gebruik van API-sleutels. Het injecteren van je API-sleutel als een ruwe Authorization-header of via standaard HTTP Basic Auth maakt het zeer eenvoudig om onze API's te gebruiken. API-sleutels zoals deze zijn een gangbare standaard voor webdiensten, maar hoe veilig is dit systeem?

Er zijn veel manieren om authenticatie op te bouwen in een API-first product zoals SparkPost, en de methode die wij vroeg kozen is het gebruik van API-sleutels. Het injecteren van uw API-sleutel als een ruwe Authorization-header of via standaard HTTP Basic Auth maakt het zeer eenvoudig om onze APIs te gebruiken. API-sleutels zoals deze zijn een gemeenschappelijke standaard voor webservices, maar hoe veilig is dit systeem?

De risico's

Bij het gebruik van een webservice kan een aanvaller, als hij uw API-sleutel in handen krijgt, namens u handelen en dingen doen zoals (in ons geval):

  • hun e-mail gratis via uw account verzenden

  • uw ontvangerslijst downloaden en deze aan spammers geven (als ze zelf geen spammers zijn)

  • uw templates bewerken om phishing-links in te voegen

  • spam of phishing namens u verzenden

Elk van deze uitkomsten kan zeer schadelijk zijn voor uw reputatie en uw bedrijf, en in het geval van phishing mogelijk directe schade toebrengen aan uw eindgebruikers. Daarom is het uiterst belangrijk ervoor te zorgen dat niemand uw API-sleutel kan ontdekken.

De kansen

Heb ik bruteforce gehoord? Onze API-sleutels zijn willekeurig gegenereerde 40-tekens lange hexadecimale reeksen. Dit maakt een totaal van 1,4615e+48 API-sleutels. Als alle 3 miljard computers en smartphones in de wereld 100 API-sleutels per seconde zouden proberen, ervan uitgaande dat onze servers dat zouden toestaan, zou het doorlopen van alle mogelijke API-sleutels meer dan 150.000.000.000.000.000.000.000.000.000 jaar duren. Dus brute forcing van de API-sleutel heeft gewoon geen zin.

Dus hoe kan iemand jouw API-sleutel vinden? Omdat de sleutel als een header wordt doorgegeven, kan hij worden gelezen met man-in-the-middle aanvallen, dus je moet er altijd voor zorgen dat jouw client de SSL-certificaten controleert bij het verbinden met onze API's (dit is een belangrijke reden waarom we https vereisen voor API-verbindingen). Bovendien, als je onzorgvuldig omgaat met jouw gebruik van openbare coderepositories zoals github, kan jouw API-sleutel gemakkelijk in de openbaarheid eindigen. Dit is geen academisch probleem: er zijn bekende bots die github crawlen om API-sleutels te vinden en er zijn succesvolle aanvallen geweest via die vector.

Heb ik bruteforce gehoord? Onze API-sleutels zijn willekeurig gegenereerde 40-tekens lange hexadecimale reeksen. Dit maakt een totaal van 1,4615e+48 API-sleutels. Als alle 3 miljard computers en smartphones in de wereld 100 API-sleutels per seconde zouden proberen, ervan uitgaande dat onze servers dat zouden toestaan, zou het doorlopen van alle mogelijke API-sleutels meer dan 150.000.000.000.000.000.000.000.000.000 jaar duren. Dus brute forcing van de API-sleutel heeft gewoon geen zin.

Dus hoe kan iemand jouw API-sleutel vinden? Omdat de sleutel als een header wordt doorgegeven, kan hij worden gelezen met man-in-the-middle aanvallen, dus je moet er altijd voor zorgen dat jouw client de SSL-certificaten controleert bij het verbinden met onze API's (dit is een belangrijke reden waarom we https vereisen voor API-verbindingen). Bovendien, als je onzorgvuldig omgaat met jouw gebruik van openbare coderepositories zoals github, kan jouw API-sleutel gemakkelijk in de openbaarheid eindigen. Dit is geen academisch probleem: er zijn bekende bots die github crawlen om API-sleutels te vinden en er zijn succesvolle aanvallen geweest via die vector.

Heb ik bruteforce gehoord? Onze API-sleutels zijn willekeurig gegenereerde 40-tekens lange hexadecimale reeksen. Dit maakt een totaal van 1,4615e+48 API-sleutels. Als alle 3 miljard computers en smartphones in de wereld 100 API-sleutels per seconde zouden proberen, ervan uitgaande dat onze servers dat zouden toestaan, zou het doorlopen van alle mogelijke API-sleutels meer dan 150.000.000.000.000.000.000.000.000.000 jaar duren. Dus brute forcing van de API-sleutel heeft gewoon geen zin.

Dus hoe kan iemand jouw API-sleutel vinden? Omdat de sleutel als een header wordt doorgegeven, kan hij worden gelezen met man-in-the-middle aanvallen, dus je moet er altijd voor zorgen dat jouw client de SSL-certificaten controleert bij het verbinden met onze API's (dit is een belangrijke reden waarom we https vereisen voor API-verbindingen). Bovendien, als je onzorgvuldig omgaat met jouw gebruik van openbare coderepositories zoals github, kan jouw API-sleutel gemakkelijk in de openbaarheid eindigen. Dit is geen academisch probleem: er zijn bekende bots die github crawlen om API-sleutels te vinden en er zijn succesvolle aanvallen geweest via die vector.

IP-whitelisting te hulp

Wanneer u een API-sleutel aanmaakt, kunt u nu een lijst met IP-adressen specificeren die bevoegd zijn om deze sleutel te gebruiken. U kunt meerdere IP-adressen, evenals IP-blokken, specificeren met behulp van de CIDR-notatie, zodat u uw servers niet individueel hoeft op te sommen. Wanneer de API-sleutel wordt gebruikt, voor REST API's of SMTP, matchen we het verbindende IP-adres met deze lijst om toegang toe te staan of te weigeren.

Met deze functie, zelfs als uw API-sleutel wordt gevonden of gestolen, zullen alleen uw servers deze kunnen gebruiken. Gezien de risico's en hoe gemakkelijk het is om het in te stellen, raden we al onze klanten ten zeerste aan deze functie te gebruiken.

Laatste woorden

Enkele persoonlijke aanbevelingen met betrekking tot beveiliging:

  • Houd uw API-sleutels niet in code. Er zijn veel voordelen om ze als omgevingsvariabelen te bewaren, zoals Heroku doet

  • U kunt een onbeperkt aantal API-sleutels maken, en het is voor de veiligheid het beste om de verantwoordelijkheden onder verschillende API-sleutels te verdelen, in plaats van slechts één Zwitsers zakmes-sleutel te gebruiken. Dit zou u ook in staat stellen om per sleutel verschillende IP-witlijsten te hebben, voor een nog betere scheiding van verantwoordelijkheden

  • Als u met derden werkt, deel dan uw API-sleutel niet, maar maak een nieuwe voor hen aan, met alleen de benodigde machtigingen en gekoppeld aan hun IP-adressen

  • Aangezien API-sleutels alleen via de UI kunnen worden aangemaakt, is het inschakelen van 2-factor-authenticatie op uw SparkPost-account een must-have en kost slechts 2 minuten

Laten we je in contact brengen met een Bird-expert.
Bekijk de volledige kracht van de Bird in 30 minuten.

Door te verzenden, ga je ermee akkoord dat Bird contact met je mag opnemen over onze producten en diensten.

U kunt zich op elk moment afmelden. Zie Bird's Privacyverklaring voor details over gegevensverwerking.

Nieuwsbrief

Blijf op de hoogte met Bird via wekelijkse updates in je inbox.

Door te verzenden, ga je ermee akkoord dat Bird contact met je mag opnemen over onze producten en diensten.

U kunt zich op elk moment afmelden. Zie Bird's Privacyverklaring voor details over gegevensverwerking.

Laten we je in contact brengen met een Bird-expert.
Bekijk de volledige kracht van de Bird in 30 minuten.

Door te verzenden, ga je ermee akkoord dat Bird contact met je mag opnemen over onze producten en diensten.

U kunt zich op elk moment afmelden. Zie Bird's Privacyverklaring voor details over gegevensverwerking.

Nieuwsbrief

Blijf op de hoogte met Bird via wekelijkse updates in je inbox.

Door te verzenden, ga je ermee akkoord dat Bird contact met je mag opnemen over onze producten en diensten.

U kunt zich op elk moment afmelden. Zie Bird's Privacyverklaring voor details over gegevensverwerking.

Laten we je in contact brengen met een Bird-expert.
Bekijk de volledige kracht van de Bird in 30 minuten.

Door te verzenden, ga je ermee akkoord dat Bird contact met je mag opnemen over onze producten en diensten.

U kunt zich op elk moment afmelden. Zie Bird's Privacyverklaring voor details over gegevensverwerking.

R

Bereik

G

Grow

M

Manage

A

Automate

Nieuwsbrief

Blijf op de hoogte met Bird via wekelijkse updates in je inbox.

Door te verzenden, ga je ermee akkoord dat Bird contact met je mag opnemen over onze producten en diensten.

U kunt zich op elk moment afmelden. Zie Bird's Privacyverklaring voor details over gegevensverwerking.