Medan cybersäkerhet ofta tänks på när det gäller databaser och arkitektur, är mycket av en stark säkerhetsställning beroende av element i frontend-utvecklarens domän.
För vissa potentiellt förödande sårbarheter som SQL-injektion och Cross-Site Scripting (XSS) är ett väl genomtänkt användargränssnitt den första försvarslinjen.
Här är några fokusområden för front-end-utvecklare som vill hjälpa till att bekämpa den goda kampen.
Kontrollera användarinmatning
En hel del galna saker kan hända när utvecklare bygger ett formulär som inte styr användarnas inmatning. För att bekämpa sårbarheter som injektion är det viktigt att validera eller desinficera användarinmatningen.
Du kan validera inmatning genom att begränsa den till kända värden, till exempel genom att använda semantiska ingångstyper eller valideringsrelaterade attribut i formulär. Ramar som Django hjälper också till att tillhandahålla fälttyper för detta ändamål. Sanering av data kan göras genom att ta bort eller ersätta kontextuellt farliga tecken, till exempel genom att använda en vitlista eller undgå ingångsdata.
Även om det kanske inte är intuitivt, bör även data som en användare skickar in till sitt eget område på en webbplats valideras. Ett av de snabbaste virusen att sprida sig var Samy-masken på MySpace (ja, jag är gammal), tack vare kod som Samy Kamkar kunde injicera i sin egen profilsida. Returnera inte direkt någon input till din webbplats utan grundlig validering eller sanering.
För ytterligare vägledning om kampen mot injektionsattacker, se OWASP Injection Prevention Cheat Sheet.
Akta dig för dolda fält
Att lägga till type="hidden"
är ett lockande bekvämt sätt att dölja känslig data på sidor och formulär, men tyvärr inte effektivt.
Med verktyg som ZapProxy och till och med inspektionsverktyg i vanliga webbläsare kan användare enkelt klicka för att avslöja goda bitar av osynlig information.
Dölj kryssrutor kan vara ett snyggt hack för att skapa CSS-bara-växlar, men dolda fält bidrar inte mycket till säkerheten.
Överväg noggrant autofyllningsfält
När en användare väljer att ge dig sin personligt identifierbara information (PII) bör det vara ett medvetet val. Autofyll formulärfält kan vara praktiskt - för både användare och angripare. Utnyttjande med dolda fält kan skörda PII som tidigare fångats av ett autofullständigt fält.
Många användare är inte ens medvetna om vilken information deras webbläsares autofyll har lagrat. Använd dessa fält sparsamt och inaktivera autofyllda formulär för särskilt känslig data.
Det är viktigt att du också väger din riskprofil mot dess avvägningar. Om ditt projekt måste vara WCAG-kompatibelt kan inaktiveringen av autoslutförandet bryta din inmatning för olika modaliteter. För mer, se 1.3.5: Identifiera ingångssyfte i WCAG 2.1.
Håll fel generiska
Även om det kan verka användbart att låta användarna veta om det finns en bit data, är det också till stor hjälp för angripare. När du hanterar konton, e-postmeddelanden och PII är det säkrast att göra fel (?) På sidan av mindre. Istället för att returnera "Ditt lösenord för det här kontot är felaktigt", prova den mer tvetydiga återkopplingen "Felaktig inloggningsinformation" och undvik att avslöja om användarnamnet eller e-postmeddelandet finns i systemet.
För att vara mer hjälpsam, ge ett framträdande sätt att kontakta en människa om ett fel skulle uppstå. Undvik att avslöja information som inte är nödvändig. Om inget annat, för himmelens skull, föreslå inte data som stämmer nära med användarinmatningen.
Var en dålig kille
När du överväger säkerhet är det bra att ta ett steg tillbaka, observera informationen som visas och fråga dig själv hur en skadlig angripare skulle kunna använda den. Spela djävulens advokat. Om en dålig kille såg den här sidan, vilken ny information skulle de få? Visar vyn någon PII?
Fråga dig själv om allt på sidan verkligen är nödvändigt för en äkta användare. Om inte, ändra eller ta bort det. Mindre är säkrare.
Säkerheten börjar vid ytterdörren
Dessa dagar finns det mycket mer överlappning mellan kodning på framsidan och baksidan. För att skapa en väl avrundad och säker applikation hjälper det att ha en allmän förståelse för hur angripare kan få foten i ytterdörren.