En magisk koblingsfeil kan skje etter at postleveringen har lykkes. Meldingen kan komme etter utløp, applikasjonen kan ugyldiggjøre en tidligere kobling, eller en omdirigering kan lande på feil miljø. Undersøk disse som distinkte hypoteser i stedet for å behandle hver mislykket pålogging som et problem med autentiseringsregistrering.
Spor de to reisene
E-postreisen går fra forespørsel til generering, kø og mottak-server aksept. Søknadsreisen går fra token-oppretting til lenkeforespørsel, validering og øktetablering. Bli med dem ved å bruke en ikke-hemmelig korrelasjonsidentifikator. Ikke logg komplette bærerkoblinger eller lim inn en direktekobling i en ekstern skanner.
En SMTP godkjenningshendelse er bevis på overføringsansvar, ikke en fullført brukerøkt. Hold støtteetikettene nøyaktige. RFC 5321. Registrer manglende synlighet eksplisitt når leverandøren avslører bare innsending og endelig status.
OWASP-loggingsveiledning støtter korrelasjon uten å avsløre tilgangshemmeligheter.
Valider lenkedesignet separat
Sikkerhetsprinsippene i OWASPs veiledning for tilbakestilling av passord inkluderer utløpende tokens for engangsbruk, pålitelige HTTPS-destinasjoner og beskyttelse mot tokenlekkasje. Disse prinsippene er relevante for gjennomgang av sensitive e-postkoblinger, men kilden handler om tilbakestilling av passord i stedet for en fullstendig spesifikasjon for passordløs pålogging. Et magisk koblingsprodukt trenger sin egen trusselmodell og øktkontroller. OWASP tilbakestilling-token veiledning.
Inspiser den tiltenkte verten, miljøet, banen og omdirigeringsatferden ved å bruke engangstestlegitimasjon i et godkjent testmiljø. Bekreft om en nyere forespørsel ugyldiggjør tidligere koblinger og om vellykket bruk ugyldiggjør tokenet. Registrer den faktiske policyen i stedet for å anta at alle produktene oppfører seg likt.
Sammenlign en utløpsfeil og en forbrukssvikt
Vurder to hypotetiske tokens opprettet kl. 09:00 UTC med utløp kl. 09:10. Tilfelle A når mottakerens aksept klokken 09:11, allerede ett minutt etter utløpet. Sak B når det stadiet klokken 09:01, har en vellykket søknadsinnløsning registrert klokken 09:02, og mottar et nytt forsøk klokken 09:03. Under en engangspolicy skal Bs andre forsøk mislykkes som allerede brukt selv om det gjenstår syv minutter.
Dette er oppfunne hendelsesantakelser, ikke utførelse av tilstandsmaskin eller verifiserte hendelser. Sak A foreslår en tidsundersøkelse; sak B krever bevis om den tidligere søknadsovergangen. En kortere postforsinkelse ville ikke gjøre B gjenbrukbar. Ikke tilordne den tidlige handlingen til en sikkerhetsskanner eller en person utelukkende fra en brukeragentstreng. Korreler autoriserte redigerte forespørselsposter, tilstandsendringer og økthendelser før du tilskriver skuespilleren.
Reparer uten å gjøre koblinger gjenbrukbare
For reell forsinkelse, ta tak i det langsomme stadiet og verifiser det gjenværende gyldighetsbudsjettet. For for tidlig forbruk, se om applikasjonen kan skille en ufarlig landingsforespørsel fra den eksplisitte, sikkert validerte handlingen som etablerer en økt. Det er en designgjennomgang, ikke en universell oppdatering; bevare replay-forebygging, utløp og andre nødvendige kontroller.
Fjern unødvendig markedsføringssporing fra sensitive kontokoblinger gjennom den godkjente malkonfigurasjonen og bekreft den endelige meldingen. Eventuell omdirigering eller mobil dyplink-atferd må fortsatt testes. Løs aldri en periodisk feil ved å godta utløpte tokens på ubestemt tid.
Test kontrollerte reiser på nytt for forsinket ankomst, gjentatte forespørsler, avspilling og ruting i feil miljø. Lukk med nøyaktig feilklasse og gjenværende hull. En tydelig klassifisering forhindrer at e-postoperatører og applikasjonsingeniører gjentatte ganger endrer feil system.
Krev en egen lukking for hver feilklasse
En raskere ankomst kan avslutte en sak om utløpsforsinkelse først etter at en kontrollert reise bekrefter gyldighetsbudsjettet. Den kan ikke avslutte en sak om tidligere forbruk eller feil miljø. Registrer klassen, støtte søknadsovergang og manglende bevis før du tildeler en årsak.