Solení hesel

Z MoodleDocs
Přejít na:navigace, hledání

Co je solení hesel?

Hesla uživatelů jsou v databázi Moodlu ukládána v zahešovaném tvaru pomocí funkce MD5. Solení hesel je metoda, při které se ještě před výpočtem MD5 k původnímu heslu přidá náhodný řetězec, tzv. "sůl". Přidáním této hodnoty se případným útočníkům snižuje šance na odhalení původního hesla, neboť čím je původní heslo delší a náhodnější, tím je obtížnější jej z MD5 hodnoty odhalit slovníkovou metodou a útokem hrubou silou.

Jak aktivovat solení hesel

Přidejte do vašeho konfiguračního souboru config.php řádek

$CFG->passwordsaltmain = 'sem vložte nějaký dlouhý náhodný řetězec';

Doporučuje se řetězec dlouhý alespoň 40 znaků obsahující písmena, číslice a další znaky. Pro vygenerování takového náhodného řetězce je možno použít například Moodle Salt Generator.

Z bezpečnostních důvodů může být sůl definována pouze v souboru config.php a nikoliv přes webové rozhraní, a není ani uložena v databázi.

Změna soli

Pokud si budete chtít v budoucnu změnit hodnotu tajného řetězce, uložte starou hodnotu do konfigurační proměnné passwordsaltalt1 a novou sůl uložte do passwordsaltmain:

$CFG->passwordsaltmain = 'sem vložte NOVOU hodnotu';
$CFG->passwordsaltalt1 = 'sem vložte STAROU hodnotu';

Bez uložení staré hodnoty by se žádný z uživatelů, jejichž heslo je "osoleno" starou hodnotu nemohl na vaše stránky přihlásit a musel by si nechat resetovat heslo pomocí odkazu Zapomněl jsem heslo. Pro uložení všech předchozích solí máte k dispozici proměnné passwordsaltalt1, passwordsaltalt2, passwordsaltalt3, ... až passwordsaltalt20.

Pokud pouze změníte hlavní hodnotu soli a neponecháte předchozí hodnotu v jedné uvedených proměnných pro alternativní sůl, nebudete se pravděpodobně moci přihlásit na vaše stránky!

Deaktivace solení hesel

Vypnutí solení se nedoporučuje!

Pokud z nějakého důvodu potřebujete solení vypnout, uložte stávající hodnotu soli do jedné z alternativních proměnných a namísto nové hodnoty soli vložte prázdný řetězec:

$CFG->passwordsaltalt1 = 'sem vložte NOVOU hodnotu';
$CFG->passwordsaltmain = '';

Import uživatelů z jiných serverů

Pokud importujete uživatele z jiných serverů a jejich hesla jsou osolena, musíte do vašeho config.php přidat hodnotu soli, jaká byla nastavena na jejich původním serveru.

$CFG->passwordsaltmain = 'toto je vaše sůl';
$CFG->passwordsaltalt1 = 'toto je sůl používaná na původním serveru uživatelů';

Jak Moodle ověřuje osolená hesla?

Při ověřování hesla Moodle nejdříve hledá, zda je v config.php definovaná proměnná $CFG->passwordsaltmain. Pokud je nalezena, přidá se k heslu zadaném uživatelem, spočítá se hodnota MD5 heše a porovná s hodnotou uloženou v databázi.

Pokud toto ověření selže, porovná se neosolená podoba hesla (resp. její heš) s údajem v databázi. Dojde-li ke shodě, heslo uživatele se osolí hodnotou passwordsaltmain a heš takovéto hodnoty se aktualizuje v databázi. Heslo je tedy osoleno až poté, co se uživatel poprvé přihlásí po nastavení soli ve vašem config.php.

Pokud selže i tento test, ověří se každá z dvaceti alternativních hodnot soli. Při nalezení shody se heslo uživatele osolí pomocí hlavní hodnoty a uloží v databázi. Z tohoto důvodu musíte všechny ostatní soli, pomocí nichž byly hesla uživatelů osoleny (ať už předchozí soli na vašem serveru nebo jiné soli na jiných serverech) uložit do jedné z dvaceti dostupných proměnných pro alternativní sůl.