Her får du hjelp til å lage hjemmeside med video. Alle verktøy og programmer vi bruker til å lage webside er gratis.
sikring og kryptering av passord i MySQL
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?
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');
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?
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
?>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().
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.
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.
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.

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