tördeljük jelszavak
Ha a kérelem nem titok, akkor van értelme, hogy megvédje csak egy kis darab információ, mint például a jelszót. A jelszavak minden esetben nem lehet tárolni egyértelmű szöveget, így általában titkosított. Azonban ahelyett, hogy a titkosítást lehet venni, mint egy elfogadott modell a legtöbb UNIX-alapú rendszerek és a MySQL gyakorlat: használja a jelszó algoritmus, illetve a táblázatban tárolt az eredménye (konvolúció).
Szemben a hagyományos titkosítást, ami lehet fordítani, a jó hash függvény visszafordíthatatlan. Az egyetlen módja annak, hogy megtudja, a jelszó, amelyet által generált konvolúció - használat megköveteli hatalmas számítástechnikai erőforrásokat kimerítő keresés (vagyis megpróbál minden lehetséges bemeneti adatok).
A MySQL, három függvény kivonatolja a jelszavakat: ENCRYPT (), SHA1 () és a MD5Q 1. Ha látni, hogy visszatérjenek, a legegyszerűbb módja annak, hogy prime-
Menet mindegyikük egy és ugyanazt a bemeneti szöveget. Csináljuk a vonalon p4ssword példa:
mysql> SELECT MD5 ( 'p4ssword'), ENCRYPT ( 'p4ssword'), SHA1 ( 'p4ssword') \ G
MD5 ( 'p4ssword): 93863810133ebebe6e4c6bbc2a6ce1e7 ENCRYPT (p4ssword): dDCjeBzIycENk
Mindhárom funkció visszatérjen egy string betűk és számok fix hosszúságú, amely tárolható egy CHAR oszlopban. Mivel a ENCRYPT () visszatérhet a betűk a különböző esetekben, akkor jobb, hogy meghatározza, hogy milyen típusú az oszlop CHAR bináris.
Soha ne használjon alkalmazások belső funkciója MySQL PAS SWO R D (). Visszatért az eredmények függnek a MySQL verzió.
Az adatok mentéséhez konvolúció elég ezt a parancsot:
mysql> INSERT INTO user_table (felhasználó, pass) ÉRTÉKEK ( 'felhasználó', MD5 ( 'p4ssword'));
Annak ellenőrzésére, a felhasználó jelszavát felhasználó, akkor végezze el a SELECT lekérdezés, hogy ellenőrizze, hogy ugyanaz a konvolúció az említett továbbított jelszót az adatbázisban tárolt. Perl, akkor ezt az alábbiak szerint:
my $ sth = $ dbh-> készíteni ( 'SELECT * FROM user_table'
„Amennyiben user =. És adja át = MD5 „) (?);
Hashelés jelszavak - könnyen és viszonylag biztonságos módon kell tárolni a jelszavakat az adatbázisban, félelem nélkül hackelés. A helyzetet tovább bonyolítja a szótár támadás, akkor a hash kombinációja felhasználói nevét és jelszavát, hogy az eredmény attól függ, hogy a nagyszámú változót:
my $ sth = $ dbh-> készíteni ( 'SELECT * FROM user_table'
„Amennyiben user =. És adja át = SHA1 (CONCAT ().) „); $ Sth-> execute ($ username, $ username, $ password):
Az egyetlen probléma - ez a kapcsolódó kockázat, hogy a szerver jelszavakat tiszta szövegként küldi; írható, egyszerű szöveges, a naplóban a lemezen, és látható a lerakó a folyamat memóriát. A kissé csökkentheti ezt a kockázatot, akkor tárolja a jelszót a felhasználó, vagy akár áthelyezni tördelő alkalmazás szinten, hogy megszüntesse a problémát a gyökér. A legtöbb programozási nyelvek vannak funkciók vagy titkosítási könyvtárat. Alatta nézzük meg a kérdést a titkosítás az alkalmazás szintjén.