' freak.no - Frakte variabel i url. Sikkerhet?
freak.no

freak.no (https://freak.no/forum/index.php)
-   Web-utvikling (https://freak.no/forum/forumdisplay.php?f=67)
-   -   Frakte variabel i url. Sikkerhet? (https://freak.no/forum/showthread.php?t=288488)

vonS 30. april 2016 21:48

Frakte variabel i url. Sikkerhet?
 
Hei,

jeg holder for tiden på med et prosjekt der bruker kan oppgi sin lokasjon og få informasjon tilpasset deretter.

Innholdet i disse variablene, lengdegrad og breddegrad, fraktes nå i URLen, altså f. eks.: index.php?lengdegrad=(tall)&breddegrad=(tall).

Jeg anser jo lokasjonsdata som noe sensitivt. Er det ok å behandle disse dataene slik jeg gjør nå? Eller må jeg endre måten jeg frakter disse dataene?

vidarlo 30. april 2016 21:54

Det er forsåvidt sensitivt, men du får ikkje mykje betre sikkerhet ved å sende det som post. Fordelen med post er at det vil ikkje vere synleg i historikken for andre brukarar. SSL er kanskje greit å ha og?

Viare så er ikkje at eg var plass y i går 15:30 veldig sensitivt. Det eg ville sett på som sensitivt er plasseringa mi over tid, slik at det vert mogeleg å kartlegge. Eit blip? Ok, kult. Alle som har tilgang til ein av dingsane mine kan uansett gjette på at eg var på jobb, på bussen eller heime på det tidspunktet, og treffe med 90% sannsyn...

vonS 30. april 2016 23:09

Takk for svar. Jeg er enig med deg i at dataene som sendes kanskje ikke likevel er så sensitive. Dersom det heller ikke finnes noen formelle krav til hvordan jeg skal behandle disse dataene tror jeg nok at jeg holder meg til løsningen jeg allerede har skrevet.

vidarlo 30. april 2016 23:11

Dei formelle krava går stortsett på samtykke, behandling og oppbevaring, og ikkje tekniske implementasjoner. Igjen så vil det her vere stor skilnad på ei løysing som sporer brukeren 24/7, eller ein app der ein kan trykke manuelt for å finne posisjonen sin.

FanzyPants 20. mai 2016 06:22

du kan lage en enkel funksjon for å kryptere og dekryptere teksten så vil det være av liten til ingen nytte for andre..


Kode:

function enCrypt($serversalt, $string, $userpassword) {   
    $output = false;
    $method = "AES-256-CBC";
    $key = hash('sha256',$userpassword);
    $salt = substr(hash('sha256', $serversalt), 0, 16);

        $output = openssl_encrypt($string, $method, $key, 0, $salt);
        $output = base64_encode($output);   

    return $output;
}

og

Kode:

function deCrypt($serversalt, $string, $userpassword){
    $output = false;
    $method = "AES-256-CBC";
    $key = hash('sha256',$userpassword);
    $salt = substr(hash('sha256', $serversalt), 0, 16);

        $output = openssl_decrypt(base64_decode($string), $method, $key, 0, $salt);   

    return $output;
}

så bruker du f.eks brukerens eget passord til userpassword og tja.. brukerens epost som serversalt.. eller noe annet som passer ditt behov.

jeg ville da satt
$string = "lengdegrad,tbreddegrad"; og encryptet den og overført med index.php?key=hash

decryptert og $key = explode(",",$_GET['key']) som gir $key[0] som lengdegrad og $key[1] som breddegrad :)

sciencefyll 29. mai 2016 23:33

Sitat:

Sitat av FanzyPants (Innlegg 3312523)
du kan lage en enkel funksjon for å kryptere og dekryptere teksten så vil det være av liten til ingen nytte for andre..

Men php blir bare køyrt på server siden. Ergo visst denne dataen skulle kun bli brukt på serversiden så er $_SESSION eller database spørringer lettere.

Skal teksten sendes mellom frontend og backend, så må du ha eit script som kan dekryptere / kryptere dataen som blir mottatt og sendt på frontend. Og da.. visst noen vil hente ut opplysningene då så kan dei bare bruke frontend algoritmen til å anskaffe dette.

Med andre ord, så hjelper ikkje php skriptet. Eller tenker eg heilt feil nå?

Dyret 30. mai 2016 01:33

Sitat:

Sitat av sciencefyll (Innlegg 3314740)
Men php blir bare køyrt på server siden. Ergo visst denne dataen skulle kun bli brukt på serversiden så er $_SESSION eller database spørringer lettere.

Skal teksten sendes mellom frontend og backend, så må du ha eit script som kan dekryptere / kryptere dataen som blir mottatt og sendt på frontend. Og da.. visst noen vil hente ut opplysningene då så kan dei bare bruke frontend algoritmen til å anskaffe dette.

Med andre ord, så hjelper ikkje php skriptet. Eller tenker eg heilt feil nå?

For det første så hjelper verken sessions eller databaser mot det som trådstarter spør om, nemlig å sikre transport av data til en nettside.

Angående at PHP kjøres på server-siden så er det korrekt, men assymetrisk kryptering (Public-Key Cryptography) eksisterer jo. Da kan du kryptere med en offentlig nøkkel, og kun dekryptere om du har den private (som er trygt gjemt på serversiden).

Problemet er da å få krypteringsalgoritmen til front-end på en sikker måte, slik at ikke en angriper kan bytte den ut med en som er triviell å knekke. Da vil man gjerne ta i bruk f.eks. TLS, og da er egentlig krypteringen overflødig. Metoden for å få dataene til klienten blir det svakeste leddet, og bryter man den så kan man man-in-the-middles.

Løsningen er å bruke TLS, og tvinge sikkerheten på for å unngå sslstrip. Certificate pinning om du ønsker å ta det et steg videre, og beskytte mot aktive angripere.


Alle tidspunkt er GMT +2. Klokken er nå 03:52.