it-swarm-eu.dev

Migrujte uživatelské účty ze systému pomocí hashovaných hesel

Mám systém s několika tisíci uživatelských účtů, který potřebuji migrovat na novou platformu. Systém ukládá hashované heslo, nešifrované nebo (díky bohu) prostý text. Také nemám k dispozici podrobnosti o hašování.

Jaké jsou některé účinné způsoby, jak provést přechod? Jeden nápad mi přijde na mysl z hlavy:

  1. Před časem mohu migrovat všechna data. Současní uživatelé staré platformy budou mít účet a všechna svá data v nové platformě.
  2. Vytrhněte část kódu, který aktuálně zpracovává ověřování, a změňte jej na druh služby, která zkontroluje platnost uživatelského jména/hesla.
  3. Nová platforma může nejprve zkontrolovat, zda je vlastní autentizace a zjistit, zda bylo heslo přeneseno. Pokud tomu tak není, mohl by zavolat službu na jiné platformě a zjistit, zda je platný ve starém systému.
  4. Pokud to není platné, sdělí uživateli, že se přihlásil špatně.
  5. Pokud je platný, nyní zná správné heslo a může naplnit svou vlastní uživatelskou tabulku heslem (podle jakéhokoli schématu, které platforma používá).
3
Larsenal

Nedávno jsem prošel podobným problémem, kromě toho, že jsem neměl přístup k algoritmu hash, který byl používán. Myslím, že máte 2 možnosti.

  1. Přesuňte všechny uživatelské profily do nového systému a přidejte další sloupec se starým hashem hesla.
  2. Když se uživatel poprvé přihlásí, systém neuvidí v novém systému žádný účet, ale ze starého systému existuje hash. Váš systém si ponechá předběžnou hashovací kopii hesla a zkontroluje hašovanou verzi proti starému hashe.
  3. Pokud staré hashové shody nastaví heslo v novém systému na to, co poslali.

Pokud však zjistíte, že nemáte přístup k algoritmu hash a máte e-mailovou adresu každého uživatele, máte jinou možnost. To jsem vlastně udělal:

  1. Zkopírujte všechna uživatelská jména, e-mailovou adresu a informace ze starého do nového systému. Do tabulky vložte sloupec označující, že uživatel pochází ze starého systému.
  2. Když se uživatel poprvé přihlásí do nového systému, nový systém uvidí, že má účet, ale nemá žádné heslo.
  3. Nechte svůj systém dát na obrazovku zprávu, která říká: „Aktualizovali jsme náš web a váš uživatelský účet byl převeden. Brzy obdržíte e-mail s novým dočasným heslem (ujistěte se, že heslo nebo speciální odkaz fungují pouze krátce) doba).
  4. Zašlete uživateli dočasné heslo na svůj nový web, který mu umožní přihlášení. Jakmile se poprvé přihlásí, nechte si resetovat své heslo na cokoli.

Druhá možnost pro mě fungovala docela dobře. Neměl jsem prakticky žádné stížnosti uživatelů a je to relativně bezpečné, protože to je běžný proces, kterým uživatel resetuje své zapomenuté heslo.

3
Ben Hoffman

Než se pustíte do příliš velkého problému, podívali jste se, jaký algoritmus hash může být? Pokud byly dostatečně rozumné, aby používaly hashovaná hesla, doufejme, že byly dost rozumné, aby používaly běžný hashovací algoritmus (MD5, SHA1 atd.).

Mohlo by být užitečné vyzkoušet několik společných možností, abyste zjistili, zda dokážete zpětně analyzovat, co dělají.

Také zmiňujete „vytrhávání části kódu, který v současné době provádí ověřování“. Jak to, že máte kód, ale ne hashovací algoritmus?

0
Eric Petroelje