ПредишенСледващото

Ако заявлението не е тайна, тогава има смисъл да се защитава само една малка част от информацията, като например информация за паролите. Паролите в никакъв случай не се съхраняват в чист текст, така че те обикновено са криптирани. Въпреки това, вместо криптирането може да бъде взето като модел, приет в повечето UNIX-базирани системи и в практиката MySQL: използвайте алгоритъма на парола хеширане и се съхранява в таблицата са резултат (намотка).

За разлика от традиционния за криптиране, която може да се промени, е добра хеш функция е необратимо. Единственият начин да разберете паролата, което се генерира от намотка - използване изисква огромни изчислителни ресурси изчерпателно търсене (т.е. опитате всички възможни входни данни).

В MySQL, има три функции за хеширане на пароли: криптиране (), SHA1 () и MD5Q 1. За да се види, че те се връщат, най-лесният начин да гледаното

Автор на всеки един от тях, за да една и съща въвеждане на текст. Да го направим по линията p4ssword пример:

MySQL> SELECT MD5 ( 'p4ssword "), криптиране (" p4ssword "), SHA1 (" p4ssword ") \ G

MD5 ( 'p4ssword "): 93863810133ebebe6e4c6bbc2a6ce1e7 криптиране (" p4ssword "): dDCjeBzIycENk

И трите функции връщат низ от букви и цифри на фиксирана дължина, които могат да се съхраняват в колона CHAR. Тъй като Encrypt () може да се върне на буквите в различни случаи е по-добре да определите типа на колоната CHAR двоичен.

Никога не приложения в вътрешна функция MySQL PAS SWO R D (). Се върна при нея резултатите зависят от версията на MySQL.

За да запазите намотка на данни достатъчно тази команда:

MySQL> INSERT INTO user_table (ръководство, преминават) стойности ( "потребител", MD5 ( "p4ssword"));

За да проверите потребителска парола на потребителя, за да се правят SELECT заявка, за да се провери дали една и съща намотка на споменатия предава парола, която се съхранява в базата данни. В Perl можете да направите това, както следва:

ми $ STH = $ dbh-> подготви ( "SELECT * FROM user_table"

"Когато ползвателят =. И премине = MD5) (?);

Хеширане пароли - лесно и сравнително безопасен начин за съхраняване на пароли в базата данни, без страх от хакване. За да усложни речника атаката, можете да хеширате комбинация от потребителско име и парола, така че резултатът зависи от голям брой променливи:

ми $ STH = $ dbh-> подготви ( "SELECT * FROM user_table"

"Когато ползвателят =. И премине = SHA1 (CONCAT ().) "); $ Sth-> изпълнение ($ потребителско име, $ потребителско име, парола $):

Единственият проблем - това е рискът, свързан с този сървър пароли се изпращат в чист текст; то може да бъде написано в обикновен текст в дневника на диска и може да се види в сметището паметта на процес. За малко да намали този риск, можете да съхранявате паролата в потребителя или дори да се премести на хеширане на ниво приложение, за да се елиминира проблемът в основата. За повечето езици за програмиране има функции или криптиране библиотека. Точно под ние ще разгледаме въпроса за криптиране на ниво приложение.

MySQL. Оптимизиране на производителността

Свързани статии

Подкрепете проекта - споделете линка, благодаря!