Hashování a ověřování hesel pro přihlašování uživatelů na webu

Automaticky přeloženo z Deepl

Bezpečnost se stává stále důležitějším tématem, protože podnikové aplikace jsou stále častěji přístupné prostřednictvím webu a v důsledku toho jsou zranitelnější vůči hrozbám. Protože společnost 4D věnuje otázkám bezpečnosti velkou pozornost, přinášíme vám ve verzi 4D v16 R5 několik bezpečnostních vylepšení a jedno z nich se týká ochrany hesel uživatelů webu pomocí hashování hesel.

Mimochodem, pokud se chcete dozvědět více o tom, jak vám 4D pomáhá s ochranou dat a se zabezpečením obecně, doporučuji vám podívat se na tento příspěvek na blogu.

Proč by hesla měla být zaheslovaná?

Vezměme si konkrétní příklad – máte firemní aplikaci s uživateli, kteří se mohou přihlásit zadáním svého jména a hesla v dialogovém okně. Po přihlášení získají uživatelé „práva navíc“, jako je čtení a zápis do jiných tabulek nebo polí (například oddělení lidských zdrojů může přistupovat k tabulce platů zaměstnanců, ale ne k zaměstnancům samotným).

Server pak musí ukládat „něco“, co lze použít k ověření hesel uživatelů. Nejzákladnější „něco“ tvoří samotná hesla. Jakékoli nezabezpečené heslo uložené v databázi může být odcizeno a použito ke kompromitaci aplikace a dat. Pokud hesla uživatelů před uložením do databáze zaheslujete, původní heslo nebude možné najít ani dešifrovat. Stále však můžete porovnat hash s původním heslem a zkontrolovat jeho platnost.

Hashovat nebo šifrovat?

Nejprve je třeba upozornit, že mnoho lidí hovoří o šifrovaných heslech, ale ve skutečnosti mají na mysli hesla zaheslovaná.

Šifrování používá algoritmus k zakódování dat, která lze dešifrovat pomocí klíče a získat zpět původní data. V případě hashování není možné po zakódování dat získat původní data zpět. Hesla by tedy měla být hashována, nikoli šifrována.

Důsledkem hashování hesel je, že vzhledem k tomu, že neukládáte samotná hesla (ale pouze část dat, která stačí k ověření hesla, aniž by bylo možné je obnovit), nemůžete uživatelům, kteří svá hesla zapomněli, poslat jejich hesla zpět. Místo toho pro ně musíte vybrat nové náhodné heslo nebo je nechat, aby si zvolili nové heslo.

Jaký algoritmus pro hashování?

Algoritmy jako MD5 nebo SHA jsou velmi rychlé, pak jsou zranitelné vůči útokům hrubou silou, v důsledku toho by se neměly používat k hashování hesel. Algoritmus bcrypt je pomalý už z principu, jeho cílem je být pomalý, proto je pro hašování hesel ideální. Pro více informací doporučuji přečíst si článek „Jak bezpečně uložit heslo“ od společnosti Coda Hale.

Příkazy pro hašování hesel

Byly vytvořeny dva nové příkazy pro generování a ověřování zaheslovaného hesla. Tyto příkazy jsou založeny na algoritmu bcrypt.

  • Nový uživatel si vytvoří účet s heslem:„myPassword„. Vygeneruji hash hesla s novým Generate password hash příkazem, poté jsem hash heslo uložil do databáze.

$varHash:=Generate password hash("myPassword")
[User]Login:=$varLogin
[User]HashPassword:=$varHash
SAVE RECORD ([User])

  • Když se můj uživatel pokusí připojit, zadá své heslo. Pak zkontroluji platnost mezi heslem zadaným uživatelem a hash heslem uloženým v databázi pomocí příkazu new Verify password hash příkazem.

C_TEXT($varLogin;$varPassword) // information entered by user
QUERY ([User];[User]Login;=;$varLogin)
If (Records in selection([User])=1)

// Compare the password to the hash password
If (Verify password hash($varPassword;[User]HashPassword))
SendToUser("Jste připojeni. Vítejte "+$varLogin+".")
Else
SendToUser("Zadali jste chybné heslo.")
End if

Else
SendToUser("Zadali jste chybné přihlašovací jméno.").
End if

Vanessa Talbot
• Product Owner • Vanessa Talbot se připojila k programovému týmu 4D v červnu 2014. Jako Product Owner má na starosti psaní uživatelských příběhů a jejich převod do funkčních specifikací. Její úlohou je také zajistit, aby implementovaná funkce odpovídala potřebám zákazníka. Od svého příchodu pracovala na definování klíčových prvků ve 4D. Pracovala na většině nových funkcí preemptivního multi-threadingu a také na velmi složitém tématu: nové architektuře pro enginované aplikace. Vanessa má titul z Telecom Saint-Etienne. Svou kariéru začala ve Výzkumném ústavu kriminalistickém jako vývojářka pro audiovizuální oddělení. Působila také v mediální a lékařské oblasti jako expertka na technickou podporu, produkci i dokumentaci novinek.