Přihlašování pomocí URL

Hamparle

  • ****
  • 361
  • junior developer ucho
    • Zobrazit profil
    • E-mail
Re:Přihlašování pomocí URL
« Odpověď #15 kdy: 21. 01. 2021, 13:19:41 »
Rozhodně nespoléhat na náhodný řetězec, minimálně by to chtělo zapojit J(son)W(eb)T(okens)
Mám náladu na komickou vložku. Takže se zeptám – proč?
[/quote]
Bude z toho poznat, že jde o neoprávněný pokus, jestliže pujde o random string.


Re:Přihlašování pomocí URL
« Odpověď #16 kdy: 21. 01. 2021, 13:48:59 »
Citace
Rozhodně nespoléhat na náhodný řetězec, minimálně by to chtělo zapojit J(son)W(eb)T(okens)
Mám náladu na komickou vložku. Takže se zeptám – proč?
Bude z toho poznat, že jde o neoprávněný pokus, jestliže pujde o random string.
To máte pravdu, jenže je otázka, zda zrovna tohle by bylo úzké hradlo aplikace. Dávalo by to smysl u nějaké aplikace typu CDN, kde by hraniční servery rovnou dokázaly eliminovat zjevně neplatné pokusy a vůbec je nepouštět dál. U takovéhle aplikace, která poběží na jednom serveru a bude mít pár platných klíčů, se tím podle mne moc výkonu neušetří. Naopak to zavádí složitost do vývoje.

PanVP

Re:Přihlašování pomocí URL
« Odpověď #17 kdy: 21. 01. 2021, 14:17:40 »

Nene, naštěstí jste se vrátil do zajetých kolejí a opět se pletete  ;D

Co takový index.php nebo router.php může dělat:
- routovat požadavek
- provádět include
- posílat dotaz do databáze, jestli daný klíč vůbec existuje
- logovat každou z jednotlivých položek

Pokud tam implementuji jednoduchou paritu (která nebude zjevná), mohu požadavek zahodit dřív, než se začnu připojovat do databáze a dělat ostatní kraviny.

Velmi chytré!

hary

Re:Přihlašování pomocí URL
« Odpověď #18 kdy: 21. 01. 2021, 16:43:25 »
Pro vaše návrhy zvažuji ten FB. Je pravda, že by zjednodušilo spoustu věcí, nemusel bych standardně posílat žádné maily, nemusel bych řešit spamery a roboty... A přímý kontakt - mail, bych měl přes FB api získat taky. URL s tokenem bych mohl nechat třeba jen pro read-only přístup, pro ty co budou chtít

Re:Přihlašování pomocí URL
« Odpověď #19 kdy: 21. 01. 2021, 17:07:29 »

Nene, naštěstí jste se vrátil do zajetých kolejí a opět se pletete  ;D

Co takový index.php nebo router.php může dělat:
- routovat požadavek
- provádět include
- posílat dotaz do databáze, jestli daný klíč vůbec existuje
- logovat každou z jednotlivých položek

Pokud tam implementuji jednoduchou paritu (která nebude zjevná), mohu požadavek zahodit dřív, než se začnu připojovat do databáze a dělat ostatní kraviny.
Pro začátek vynecháme věci, které s ověřením klíče nijak nesouvisí. Takže pokud bude klíč náhodně generovaný řetězec, bude ověření klíče znamenat najít ho v seznamu vydaných klíčů. Vzhledem k tomu, že podle dotazu předpokládám tak desítky nebo stovky uživatelů, celá „databáze“ klíčů se vejde do paměti jako vyhledávací strom nebo hash tabulka.

Pokud by klíč bylo JWT, znamená to dekódovat reperezentaci klíče, ověřit podpis (předpokládejme rychlejší variantu s hashem). Pokud bude podpis platný, dekódujeme data z JWT, získáme identifikátor – a ten už můžeme hledat v databázi klíčů jako v předcházejícím případě. Pro oprávněného uživatele je to mnohem delší cesta, pro někoho, kdo jen zkouší náhodné klíče, to s tím dekódováním a hashováním nejspíš bude také delší, než jednoduché vyhledávání.

Pokud by tam nebylo JWT, ale „jednoduchá parita, která nebude zjevná“, je to učebnicový příklad security through obscurity.

Ale hlavně, pokud někdo na prostor klíčů třeba 2256 zkouší útočit hrubou silou, buď protože si neodhadl, jak velký ten prostor může být, nebo protože tomu nerozumí – pak je to nějaké tele, které bude možné jednoduše eliminovat blokací jedné IP adresy na firewallu.


Re:Přihlašování pomocí URL
« Odpověď #20 kdy: 21. 01. 2021, 17:42:13 »
Je mozny, ze vymyslis kolo. Zkus si neco precist o SAML, Federation Services, OpenID.

PS: jeste dost zalezi na tom jestli to pobezi na Internetu anebo na korporatnim intranetu.

Re:Přihlašování pomocí URL
« Odpověď #21 kdy: 21. 01. 2021, 17:56:09 »
Je mozny, ze vymyslis kolo. Zkus si neco precist o SAML, Federation Services, OpenID.
Pokud nechce řešit přihlašování heslem jako příliš složité, pochybuju, že chce řešit SAML nebo federation services.

PS: jeste dost zalezi na tom jestli to pobezi na Internetu anebo na korporatnim intranetu.
Poběží to na internetu, jak je zřejmé z dotazu.

hary

Re:Přihlašování pomocí URL
« Odpověď #22 kdy: 21. 01. 2021, 23:44:58 »
Zkoušel jsem tu integraci s FB a musím říct že je to teda docela voser. Ze začátku nice, dají vám dají hezký kus javascriptu pro vložení do vaší stránky, ale už vám třeba pořádně neřeknou jak s tím správně pracovat na serverové straně. Lidi mají problémy s požadavkem na https při i při lokálním vývoji a já taky - to je pro mě dost komplikace (aplikace samotná https neumí a produkčně mám nginx s reverzní proxy).

...
Jak jsi řešil ty to HTTPS? Nebo to bylo předtím než to nakázali?

hary

Re:Přihlašování pomocí URL
« Odpověď #23 kdy: 23. 01. 2021, 12:42:41 »
Nakonec jsem to vyřešil pomocí Spring Social, které používá OAuth a to mi projde. Takže jsem nemusel dělat psí kusy se svým vývojovým prostředím. Přihlašuje se pomocí přesměrování a výhoda je, že na frontendu nemusí být nic od FB - co by sledovalo uživatele. Pořád ale nejde z lokálu po přihlášení používat API FB a zažádat třeba o email, tak to mám při vývoji odifované. Integrace FB byla celkem frustrující, po změně strategie jsem zase samozřejmě bojoval o to víc se Spring Security. Celkově byla nutná spousta pokus omylů jako když člověk objevuje kolo, ale díky bohu za tu knihovnu. Stálo mě to přes 1 MD a ještě musím splnit nějaké policies a GDPR blbosti. Doufám že se neobjeví další problémy až to budu nasazovat naostro na svoji VPS. Možná vám potom hodím odkaz až to bude haha. A tokeny budou taky!