Правилно съхранение на пароли

Първоначална позиция: Паролите, съхранявани в бази данни, са също толкова опасни за вашето приложение, колкото и всяко друго.

Рискът от подобно хакване може да бъде значително намален чрез прилагане на един много прост метод: не съхранявайте пароли в базата данни.

Има три начина за съхраняване на пароли, използвани по-късно за удостоверяване на потребителите:

  • Текстов формат.
  • Криптиран формат, съхраняван като хипертекст.
  • Създайте символ за еднопосочна парола и го запазете в базата данни.

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

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

Задайте най-подходящия алгоритъм за удостоверяване и интегритет на информацията за вашата организация. Тъй като хешовете все още са много уязвими на атаки с груба сила, най-доброто решение не е най-бързият алгоритъм. Използването на по-бавен алгоритъм означаваче процесът на избор на парола ще отнеме повече време. Системата трябва да е проектирана така, че никога да не се налага да нулирате паролата си. 1 [Ролите трябва само да бъдат инсталирани или преинсталирани.

Понякога обаче програмата трябва да запази паролата за по-късна употреба. Например, веднъж тествах приложение, което трябваше да удостовери доставчик на данни от трета страна. Тъй като този доставчик изискваше удостоверяване, приложението трябваше да съхранява паролата с помощта на обратимо криптиране. Тъй като приложението изисква възстановима парола, компанията трябваше да предприеме допълнителни стъпки, за да защити ключа за криптиране, което направи, като постави кода за криптиране и декриптиране в COM компонента.

Недостатъкът на използването на обратимо криптиране е, че ключът за криптиране се променя много рядко. Замяната на ключа за шифроване е много проблематична, тъй като в този случай ще трябва да дешифрирате и повторно шифровате целия хипертекст на базата данни, като използвате новия ключ.

Ако планирате да използвате обратимо криптиране, вашите планове трябва да включват също разработване на механизъм, който редовно променя ключа за криптиране и актуализира всички криптирани данни.

Предупреждение: За обратимо криптиране винаги използвайте силен алгоритъм, като DES, BlowFish. Никога не използвайте XOR (изключително ИЛИ), ROT-13 или аматьорски кодове за криптиране; те не осигуряват правилното ниво на сигурност и са по-податливи на хакване, отколкото си мислите. Грубо казано, слабите алгоритми за криптиране могат да бъдат сравнени с малък катинар на голяма чанта.

Използвайте еднопосочна функция и съхранете хеша в базата данни. След като потребителят влезе в системата, изпълнете хеш функция за паролата,въведен от потребителя и сравнете този хеш с този, съхранен във вашата база данни. Предимството на хеш функцията е, че ключът се състои само от букви, което позволява на потребителя да въвежда всякакви символи от клавиатурата в своята парола, без да се налага да предприемате допълнителни стъпки за управление на специални знаци.

Съвет: Ако вашата система съхранява пароли в обикновен текстов формат, преходът към хешове е относително безболезнен. За да направите това, създайте ново хеш поле веднага след вече съществуващото поле за парола. След това хеширайте всички съществуващи пароли и ги запазете в ново поле. След това добавете хеш функция към вашия код за удостоверяване и код за настройка на парола. И накрая, вместо да запазвате и валидирате полето за парола, актуализирайте кода си до първия хеш на паролата, след което запазете и валидирайте с помощта на полето за хеш.