Sådan designer du sikre webformularer: Bekræft, rens og kontroller

Mens cybersikkerhed ofte betragtes som databaser og arkitektur, er meget af en stærk sikkerhedsstilling afhængig af elementer inden for front-end-udvikleren.

For visse potentielt ødelæggende sårbarheder som SQL-injektion og Cross-Site Scripting (XSS) er en velovervejet brugergrænseflade den første forsvarslinje.

Her er et par fokusområder for frontend-udviklere, der ønsker at hjælpe med at bekæmpe den gode kamp.

Styr brugerindgang

En hel smule skøre ting kan ske, når udviklere bygger en formular, der ikke styrer brugerinput. For at bekæmpe sårbarheder som injektion er det vigtigt at validere eller desinficere brugerinput.

Du kan validere input ved at begrænse det til kendte værdier, f.eks. Ved at bruge semantiske inputtyper eller valideringsrelaterede attributter i formularer. Rammer som Django hjælper også ved at levere felttyper til dette formål. Sanering af data kan gøres ved at fjerne eller erstatte kontekstfarlige tegn, f.eks. Ved at bruge en hvidliste eller undslippe inputdataene.

Selvom det måske ikke er intuitivt, skal selv data, som en bruger indsender til deres eget område på et websted, valideres. En af de hurtigste vira, der spredte sig, var Samy-ormen på MySpace (ja, jeg er gammel) takket være kode, som Samy Kamkar var i stand til at indsprøjte i sin egen profilside. Returner ikke noget input direkte til dit websted uden grundig validering eller sanering.

For yderligere vejledning om kæmpelse af injektionsangreb, se OWASP Injection Prevention Cheat Sheet.

Pas på skjulte marker

Tilføjelse type="hidden"er en lokkende bekvem måde at skjule følsomme data på sider og formularer, men desværre ikke en effektiv.

Med værktøjer som ZapProxy og endda inspektionsværktøjer i almindelige webbrowsere kan brugerne nemt klikke for at afsløre velsmagende bits med usynlig information.

Skjul afkrydsningsfelter kan være et pænt hack til oprettelse af CSS-kun-switche, men skjulte felter bidrager ikke meget til sikkerheden.

Overvej nøje autofyldningsfelter

Når en bruger vælger at give dig deres personligt identificerbare oplysninger (PII), skal det være et bevidst valg. Autofyld formularfelter kan være praktisk - for både brugere og angribere. Eksploater ved hjælp af skjulte felter kan høste PII, der tidligere er fanget af et felt til autofuldførelse.

Mange brugere er ikke engang klar over, hvilke oplysninger deres browsers autofyld har gemt. Brug disse felter sparsomt, og deaktiver autofyldte formularer til særligt følsomme data.

Det er vigtigt også at afveje din risikoprofil mod dens afvejninger. Hvis dit projekt skal være WCAG-kompatibelt, kan deaktivering af autofuldførelse bryde dit input til forskellige modaliteter. For mere, se 1.3.5: Identificer inputformål i WCAG 2.1.

Hold fejl generiske

Selv om det kan synes nyttigt at fortælle brugerne, om der findes et stykke data, er det også meget nyttigt for angribere. Når du beskæftiger dig med konti, e-mails og PII, er det mest sikkert at fejle (?) På siden af ​​mindre. I stedet for at returnere "Din adgangskode til denne konto er forkert," kan du prøve den mere tvetydige feedback "Forkerte loginoplysninger" og undgå at afsløre, om brugernavnet eller e-mailen er i systemet.

For at være mere hjælpsom skal du give en fremtrædende måde at kontakte et menneske i tilfælde af, at der opstår en fejl. Undgå at afsløre oplysninger, der ikke er nødvendige. Hvis ikke andet, af himlens skyld, foreslå ikke data, der er tæt på brugerindgangen.

Vær en dårlig fyr

Når du overvejer sikkerhed, er det nyttigt at tage et skridt tilbage, observere oplysningerne på skærmen og spørge dig selv, hvordan en ondsindet angriber ville være i stand til at bruge dem. Spil djævelens advokat. Hvis en dårlig fyr så denne side, hvilke nye oplysninger ville de få? Viser udsigten nogen PII?

Spørg dig selv, om alt på siden faktisk er nødvendigt for en ægte bruger. Hvis ikke, skal du redigere eller fjerne det. Mindre er sikrere.

Sikkerhed starter ved hoveddøren

I disse dage er der meget mere overlapning mellem kodning i forenden og bagenden. For at skabe en velafrundet og sikker applikation hjælper det med at have en generel forståelse af, hvordan angribere kan få deres fod i hoveddøren.