sikring og kryptering av passord i MySQL

ThomasK
ThomasKs bilde
Avlogget
Donator
Ble med: 30.12.2009

Denne tråden håper jeg at kan bli univerisell for alt innen optimal passordprogrammering...

Det er x ting jeg ønsker å ta opp:

#1 kryptering/dekryptering

#2 validering (kvalitet/styrke)

 

#1 Kryptering / dekryptering

Problemet jeg stor ovenfor, er å kunne definere ett gitt passord i en form, laste det opp til databasen (som kryptert) hvor man så senere kan benytte dette passordet til pålogging til medlemsområdet. No big deal, nothing special. Bare at jeg ikke får det til.

har forsøkt md5(); - men den skar seg kraftig. I databasen fikk jeg opp md5('mittpassord').Noe må ha gått galt i forbindelse med opplastingen. Ingen passord fungerte til slutt...

Jeg har blandt annet lest at md5(); ikke er den beste løsningen lenger?...

 

 

#2 validering

Når en bruker definerer ett passord så må det inneholde ett minimum av tegn: kan gjøres ved strlen();

Må også sjekke at det inneholder både tall og både STORE og små bokstaver: Kan gjøres via for();-loop mener jeg på.

 

Men først, #1 - krypteringen.

jeg har denne koden idag:

    mysql_query("

        UPDATE table SET password = '$_POST[pw]' WHERE member = '$data[member]'");

    mysql_close($eke_connection);

Forsøkte meg på mysql_real_escape_string(); på passordet der, men da ble det aldri oppdatert...

Men, uansett, hvordan får jeg til en krypteringsfunksjon her?

med hilsen
Thomas Kile

Hjemmeside
Hjemmesides bilde
Avlogget
Bidragsyter
Ble med: 17.06.2008
Kryptering av passord i MySQL

Først vil jeg bare si noe om kryptering av passord, vi kan se på validering senere.

Kryptering av passord i MySQL

Det er veldig enkelt å kryptere et passord med MySQL, og slik kan det gjøres

Kryptere passord ved hjelp av PASSWORD()

INSERT INTO users (name, pass)
  VALUES ('Titten Tei', PASSWORD('hemmelig');

Og dermed var passordet kryptert. For å hente ut;

SELECT * FROM users
  WHERE name='Titten Tei' AND pass=PASSWORD('hemmelig');
ThomasK
ThomasKs bilde
Avlogget
Donator
Ble med: 30.12.2009
og i forbindelse med

og i forbindelse med mysql_real_escape_string blir det noe slik da?

 

$user = mysql_real_escape_string($_POST['username']);

$pass = mysql_real_escape_string($_POST['password']);

 

$query = sprintf('SELECT * FROM table WHERE user = \'%s\' AND pass = PASSWORD(\'%s\')', $user, $pass);

 

 

med hilsen
Thomas Kile

Hjemmeside
Hjemmesides bilde
Avlogget
Bidragsyter
Ble med: 17.06.2008
Hva tror du?

I forbindelse med alle tidligere spørringer du har sendt databasen din, og hvis du ser hva du har gjort i tidligere script og hva jeg har fortalt deg tidligere, hva tror du?

Har du prøvd scriptet ditt og sett om det fungerer?

ThomasK
ThomasKs bilde
Avlogget
Donator
Ble med: 30.12.2009
Ville bare forhøre meg om

Ville bare forhøre meg om dette, litt med sikkerhet det også:

Er stripslashes(); det samme som \' ... \' i praksis?

stripslashes(); tar bort ' og ".

\ unngår jo ' og " og leser det som ren tekst. sant?

På en måte lignende, men kansje ikke helt det samme?

med hilsen
Thomas Kile

Hjemmeside
Hjemmesides bilde
Avlogget
Bidragsyter
Ble med: 17.06.2008
stripslashes fjerner slash

Nei, strip betyr jo å fjerne noe, jfr. strippende damer.

Når man bruker stripslashes($var) så fjerner man slashene i stringen. Eksempel:

<?php
$var
= "The poop\'s pee";

print
$var;
# The poop\'s pee

print stripslashes($var);
# The poop's pee
?>
ThomasK
ThomasKs bilde
Avlogget
Donator
Ble med: 30.12.2009
tenkte kansje på addslashes.

tenkte kansje på addslashes. De legger jo til en i begynnelen og slutten...

med hilsen
Thomas Kile

Hjemmeside
Hjemmesides bilde
Avlogget
Bidragsyter
Ble med: 17.06.2008
Bruk mysql_real_escape_string()

Nei, addslashes() legger ikke en slash til på begynnelsen og slutten, men escaper stringen. Eksempel:

<?php
$var
= "The poop's pee";

print
addslashes($var);
# The poop\'s pee
?>

Men det er anbefalt at du bruker mysql_real_escape_string() fremfor addslashes().

ThomasK
ThomasKs bilde
Avlogget
Donator
Ble med: 30.12.2009
ser den...Men tilbake til

ser den...

Men tilbake til post 2. Blir det noe slik

med hilsen
Thomas Kile

ThomasK
ThomasKs bilde
Avlogget
Donator
Ble med: 30.12.2009
done.... hehee... ble noe

done.... hehee... ble noe styr og frem og tilbake... men nå er passordene kryptert.

stringene er på henholdsvis 41 tegn, noe jeg ser på som bedre enn md5 med sine 32.

Men, trudde PASSWORD skulle definere en random string hver gang, selv om passorde var like. Men det gjorde det ikke.

Men såpass trenger man kasnje ikke?

med hilsen
Thomas Kile

Hjemmeside
Hjemmesides bilde
Avlogget
Bidragsyter
Ble med: 17.06.2008
PASSWORD

Neida, personlig synes jeg PASSWORD-funksjonen i MySQL holder i massevis til denne typen bruk. Ville nok gått for noe annet om jeg skulle sikret passordet til nettbank el.l. though.

ThomasK
ThomasKs bilde
Avlogget
Donator
Ble med: 30.12.2009
for moroskyld. hva har du i

for moroskyld. hva har du i tankene?

med hilsen
Thomas Kile

Hjemmeside
Hjemmesides bilde
Avlogget
Bidragsyter
Ble med: 17.06.2008
Kryptering og SMS

Jeg hadde laget min egen krypteringsalgoritme + validering ved å sende et random engangspassord via SMS. På den måten må en "innbruddstyv" ha tilgang til mobiltelefon og passord for å få tilgang til informasjonen.

Har selv Skandiabanken og der bruker de et slikt system for innlogging. Det samme gjør staten med MinID. Er det godt nok for dem så er det godt nok for meg.

Skal man virkelig kryptere hardcore så kan man kjøpe tilgang til datastrømmer som lages på bakgrunn av støy i universet, hehe.

ThomasK
ThomasKs bilde
Avlogget
Donator
Ble med: 30.12.2009
såpass ja... Den siste der

såpass ja... Den siste der virket ganske hardcore da:P hehee

Men det å sende SMS, er det veldig stort prosjekt å få til? Og er det store kostnader med det?

med hilsen
Thomas Kile

Hjemmeside
Hjemmesides bilde
Avlogget
Bidragsyter
Ble med: 17.06.2008
Random støy for tilfeldinggjøring og SMS

Ja, men veldig nyttig å bruke støy fra universet for å tilfeldiggjøre ting. Dette blir gjerne brukt av pokernettsteder for å stokke kort tilfeldig. Det gjøres fordi programmert algoritme aldri er sikker og helt tilfeldig og dermed kan hackes. Du kan jo tenke deg hva det ville innebære om du kunne forutse hvilke kort som ble delt ut. :)

Det er et stort og relativt kostbart prosjekt å sende SMS for validering, ja. Det er flere måter å løse det på. En er å ta betalt per innlogging (som betyr drepen for nettstedet ditt), en annen er å påta seg kostnaden (som kan bety høye regninger). Dette er en løsning jeg kun ville brukt om det var snakk om veldig viktige data og potensielt stort skadeomfang, f.eks. i en nettbank.

ThomasK
ThomasKs bilde
Avlogget
Donator
Ble med: 30.12.2009
"salt" - "seed"

kan du forklare litt rundt "salt" og "seed" metodene?

har lest litt og får forsåelse av at de kan være nyttige sikkerhetstiltak.

"salt" menes å kombinere flere felter og gjøre *noe* med de... Samle de eller noe.

"seed" er jeg ikke helt sikker på... Sto veldig lite om det på siden, men de ble satt en random string i toppen som ble brukt i forbindelse med validering av passord.

 

 

med hilsen
Thomas Kile

Svar på forumemnet

(If you're a human, don't change the following field)
Your first name.
Innholdet i dette feltet blir holdt privat og vil ikke bli vist offentlig.