Avatar billede riefart Seniormester
14. marts 2021 - 20:08 Der er 3 kommentarer og
1 løsning

CSRF Token

Jeg har en hjemmeside, hvor brugerne opretter en profil og herefter kan kontakte hinanden via en mailform. Jeg er i tvivl om jeg skal beskytte mod CSRF på mailformen, eller om det kun er når der sendes data vedr. profilen (opdatering, sletning mm) og dennes aktiviteter til databasen.
Avatar billede ejvindh Guru
17. marts 2021 - 10:34 #1
Du skal tænke det sådan, at uden CSRF beskyttelse, kan en fremmed potentielt overtage en kendt brugers login. Dermed får den fremmede alle de samme rettigheder som den kendte.

Så det afhænger lidt af, hvad dine brugere kan. Hvis ikke du beskytter mod CSRF skal du tænke alt det andet du laver som noget, der potentielt kan gøres af en, som du ikke stoler på. Det bliver i så fald vigtigt at du laver god rensning (hacker proof) af alt hvad der bliver skrevet til databasen og bliver mailet til dig selv/de øvrige brugere. Og at man ikke har adgang til følsomme data.
Avatar billede riefart Seniormester
19. marts 2021 - 23:40 #2
Jeg har sat en session:
$_SESSION['token'] = bin2hex(random_bytes(32));
når siden indlæses; et formularfelt:
<input type="hidden" name="token" value="<?php echo $_SESSION['token']; ?>"/>
og en test før script (mail, søgning, upload til database) køres:
if ($_POST['token'] === $_SESSION['token']){script}

Desuden har jeg htmlspecialchars() på al input.

Vil det være tilstrækkeligt?
Avatar billede ejvindh Guru
20. marts 2021 - 20:06 #3
Det er længe siden jeg senest har lavet et csrf-beskyttelse, så jeg har den desværre ikke lige på rygraden. Men umiddelbart husker jeg det som mere omfattende, end hvad du skriver herover. Men som sagt: Jeg kan huske forkert.

I forhold til htmlsspecialchars-delen, så har du vel sagtens indført den for at rense input, inden der skrives til databasen. Men her tænker jeg at en mere oplagt strategi er at sikre sig, at man kun skriver til databasen gennem prepared statements.
Avatar billede riefart Seniormester
21. marts 2021 - 12:12 #4
Input til databasen er altid med prepared statements, men i søgefunktioner på siden bruger jeg htmlsspecialchars. Jeg må i gang med læsning. Tak for input.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester





CIO
Årets CIO 2022: Nu skal Danmarks dygtigste CIO findes - er det dig? Eller kender du en, du vil indstille?