Sikkerhed
Verificering af request oprindelse [frarådes]
Da dit endpoint typisk er tilgængeligt på internettet, er det teknisk muligt for uvedkommende at sende falske requests og dermed forurene behandlingen af jeres data.
En måde at imødegå dette på kunne være kun at acceptere requests fra DI’s IP-adresser ved hjælp af en såkaldt allowlist eller whitelist. Vi anbefaler dog ikke denne metode, da vores IP-adresser kan ændre sig, hvilket kan skabe unødvendig afhængighed og potentielle driftsforstyrrelser.
Verificering via. X-Webhook-Signature [anbefales]
Vi anbefaler at man benytter sig at request headeren X-Webhook-Signature til at verficiere at det request man har modtaget er fra os.
Ved registering af endpoint hos DI vil man få tildelt en "secret" som skal bruges til at verficere signaturen.
X-Webhook-Signature == Base64(HMAC-SHA256(Secret + WebhookRequestId)
WebhookRequestId bliver sendt til endpointet via. X-Webhook-Request-Id-headeren.
var secret = "my_secret";
var webhookRequestId = RequestHeaders["X-Webhook-Request-Id"]
var expectedSignature = Convert.ToBase64String(
SHA256.HashData(
Encoding.UTF8.GetBytes(secret + webhookRequestId)
)
);
var actualSignature = RequestHeaders["X-Webhook-Signature"];
if (!expectedSignature.Equals(actualSignature)) {
throw new UnauthorizedAccessException("Invalid signature");
}
// .. du har adgang :)