Jeg tror den generelle tilnærmingen din er grunnleggende feil. Selv om jeg fullt ut kan forstå hvor du kommer, er din generelle tilnærming villedet.
En av de store bidragsyterne til det dårlige sikkerhetsnivået i mange applikasjoner, er å la sikkerheten være på et senere tidspunkt i stedet for å bygge den inn i begynnelsen. For ofte er tilnærmingen "la oss bare få appen til å fungere, og vi vil håndtere sikkerhet når vi har den grunnleggende funksjonaliteten i bruk.
Problemet med denne tilnærmingen er at å få den grunnleggende funksjonaliteten til å fungere ofte vil etablere begrensninger og veileder design på en slik måte at alternativene dine når det gjelder sikkerhet blir begrensede.
Dette er helt forståelig. Når du setter deg ned til høyre for den nye killer-appen, vil du fokusere på de kule delene. - nøkkelfunksjonaliteten du vil se, og du vil se reell fremgang. Ofte er det ledere og beslutningstakere som øker presset for å produsere noe å se. Alt dette tryggheten er bare stillas som kommer i veien - en slags nødvendig ondskap.
Dessverre, alt for ofte, resulterer dette i mangel på vekt på sikkerheten. Enten gjør designet å tilføre tilstrekkelig sikkerhet for hardt eller andre press, som leveringsfrister, betyr at hjørner blir kuttet .
Start med sikkerhetsmodellen. Få det til å fungere, og start deretter med app-funksjonaliteten. Det vil gi bedre design og noe som er lettere å vedlikeholde. I dette spesifikke tilfellet
- Jepp, definitivt bli kvitt GET-parametertilnærmingen.
- Glem base64-kodingen. Det er egentlig ikke å kjøpe deg noe og vil sannsynligvis skape en falsk følelse av sikkerhet.
- Se på måter å minimere behovet for å sende passordet eller til og med brukernavnet. Vurder å bruke et slags godkjenningstoken.
- Forsikre deg om at tokens er kryptert.
Det er mange fordeler med å bruke et autentiseringstoken i stedet for bare brukernavn og passord. Du kan kryptere tilleggsinformasjon i tokenet, for eksempel utløpstid. Jeg har til og med sett tokens som inkluderer klientdetaljer, som nettleserversjon og OS-informasjon, som kan brukes som en type fingeravtrykk.
Den største fordelen med å bruke et token er at du bare passerer brukernavn og passord et absolutt minimum antall ganger. Jo mindre du trenger å sende denne informasjonen, jo bedre. Imidlertid, for å bruke tokens effektivt og på en sikker måte, må de utformes i applikasjonen din og ikke klistres på etterpå.
Den andre fordelen ved å bygge dette inn i appen din fra starten er at du lettere kan teste de forskjellige tilnærmingene og bibliotekene der ute. Det finnes en rekke forskjellige tokenbaserte autentiserings- og autorisasjonsløsninger der ute, og du må identifisere hvilken som passer best til din arkitektur, språk og plattform. Få dette rett i begynnelsen, og resten vil falle på plass langt lettere enn å prøve å tilpasse det til en eksisterende kodebase.