Incryptere data'en i mysql?

Tags:    php

Hejsa. Jeg har noget data, som f.eks. et brugernav n og kodeord, som ligger i min MySQL database. Når jeg så går ind i phpmyadmin, kan jeg se alle koderne til brugerne og så tænkte jeg nemlig at andre garanteret også kunne misbruge det. Så på en eller anden måde vil jeg gerne have det kryptereret, så at det bliver anderledes. Jeg har en PHP class til det på det nuværende tidspunkt, men den giver strengen en masse specielle tegn og ved ikke om MySQL kan understøtte det? Og at når jeg tager dataen ind (lige inden) så bliver den crypteret og når den er hentet bliver den decrypteret, er det sikkert?

- Magnus.



Altså man har jo aldrig (udover som admin) adgang til at se dataen i MySQL database frit..?

Men ellers er det aldrig en god idé at gemme rene passwords i databasen. Man gemmer ofte SHA1 eller MD5 hashes af passwordet, for at beskytte brugerens password.



Som Jakob også siger så brug en Sha1 eller Md5 til at lave en hash af de passwords du gemmer i databasen.

Når brugeren så skal logge ind, skal du blot lave en hash af det brugeren har indtastet og sammenligne det med det i databasen. Hvis de to hash'es er ens, har han indtastet det rigtige password.


Så vidt jeg har forstået er Sha1 den sikreste, men hæng mig ikke op på det :O



Indlæg senest redigeret d. 10.11.2009 22:15 af Bruger #14210
Jo, det er vidst rigtigt at SHA1 har flere udfaldsmuligheder end MD5, men jeg er heller ikke helt sikker... :) Tag en tur på google.. :)



Det er primært ikke på grund af udfaldsmulighederne at man fraråder MD5. Der er igennem tiden bare fundet store huller i krypteringen og der findes noget ret hardcore cryptoanalyse som har gjort at man i dag bare anser md5 for realtivt usikkert (men ikke knækket endnu).
SHA1, skulle bare være en hel del bedre. Så brug det.
Du kan krypterer med php:
http://php.net/manual/en/function.sha1.php
phpmyadmin har eventuelt også en metode der kan krypterer hvis du indtaster informationer direkte ind med phpmyadmin.



Hejsa. Tak for svaret jeg vil tage et kig på sha1.




Det skal måske for en god ordens skyld nævnes at sha1 og md5 ikke er reel kryptering, det er checksum hashing. Forskellen er at krypteret tekst kan dekrypteres, og at hashet tekst ikke kan.

Vær iøvrigt opmærksomme på at der i teorien godt kan være flere tekststrenge, der giver den samme hash (sha1 såvel som md5) streng. Vær også opmærksomme på at man kan lave et rainbow table, altså en database med en masse præ-hashede strenge og deres tilsvarende "clear text" strenge, som en cracker kan slå op i hvis han har erhvervet sig en liste af hashede passwords.

For at øge sikkerheden på den front plejer man at benytte en salt - en salt er en streng af tal, tegn og bogstaver der tilføjes til starten/enden af den streng man vil hashe, inden man hasher den. på den måde bliver strengen længere og mere tilfældig, og dermed sværere at afkode.

eksempel:
Fold kodeboks ind/udKode 


Man skal naturligvis kende salten både når man skaber den sha1'ede checksum til passwordet, og når man tjekker på om det indtastede password er korrekt. Derfor plejer man enten at gemme den i en konfigurationsfil(hvis man kun har én salt) eller i databasen i samme tabel som det hashede password ligger i, i sit eget felt(hvis man laver en ny salt hver gang der bliver lavet et password).



t