Солта е стойност, която се добавя към парола (или друга тайна), която искате да хеширате по един начин. Това означава, че може да бъде преди, след или някъде вътре в паролата, стига нейната позиция и стойност да са последователни за дадена предоставена парола.
Това, което прави, е, че смекчава атаките с речници - основно речници на обичайни пароли, предварително хеширани без сол - от използването им за "отгатване" на еднопосочна парола, стига нападателят да не знае хеша. Ако всяка парола има различен хеш, това прави много трудно за нападателя да създаде речник, оптимизиран за разбиване на вашите пароли (ще им е необходим речник за всяка отделна сол и също така ще трябва да знаят къде е поставена солта във всяка парола ).
Разбира се, за да е приложимо всичко това, нападателят трябва да има хешовете на вашите пароли на първо място. Това няма нищо общо с атакуването на пароли чрез отгатването им чрез някаква подкана за въвеждане.
Що се отнася конкретно до MySQL, ако предоставите сол при хеширане на парола, уверете се, че записвате каква е била тази сол някъде. След това, когато потребителят се опита да се удостовери, вие комбинирате тази записана стойност на сол с паролата (по време на повикването до crypt
например) и ако полученият хеш съвпада, значи те са въвели правилната парола. (Обърнете внимание, че хеширането на парола в нито един момент не се обръща; по този начин еднопосочно.)