Portál AbcLinuxu, 1. května 2025 14:04
a ty nam nereknes, proc je spatne?
...aby se nedal jinak než z IP adresy uživatele zjistit jiný platný token pro případné podvržení (třeba dotazem z útočníkova serveru)
je vložen do tokenu a nelze z něj bez znalosti přesného obsahu třídyTo jste taky nějak zapoměl zmínit. Ono by Vám vůbec neuškodilo kdybyste ten algoritmus trochu formálně popsal. V tom případě nevím na co tam máte to IP a user agent? Celý protokol můžete udělat takto: C->S: GetForm S->C: Form,TimeStamp,Nonce,Cookie=hash(TimeStamp,Nonce) C->S: PostForm,TimeStamp,Nonce,Cookie a dále postupovat stejně. Pak se to více méně podobá klasické ochraně akorát místo uložení na serveru máte "uloženo" v prohlížeči, přičemž spoléháte na tu hash funkci a na ochranu cookies. Jak tak na to koukám tak tam ten timestamp ani hash nemusí být. Co třeba: C->S: GetForm S->C: Form,Nonce,Cookie=Nonce C->S: PostForm,Nonce,Cookie
Timestamp a hash tam být musí. Timestamp je pro zajištění expirace a v cookies je hash, aby se při pouhém přečtení cookies nedal získat tokenPřečtení cookies? To už tady nějak bylo řečeno, že nejde a kdyby šlo tak je to stejně celé k ničemu? A expirace snad ani není v tomto kontextu bezpečnostní prvek. Proti replay nepomáhá, to už bylo taky řečeno.
IP proto, aby nebylo tak snadné podvržení (již to bylo v diskuzi rozebíráno).To jsme právě rozebrali a ta nonce to spolehlivě zajistí i bez IP.
S->C: Form,Token,Cookie=hash(Token,TimeStamp vytvoření,IP,UA,salt)Tohle asi není úplně ono? Co tam dělá ten salt a jak se ho dozví validátor?
kde timestamp se získává z tokenu (a bez konfigurace třídy, která je unikátní pro každou třídu, nelze zjistit; a možností je velmi mnoho, jak jsem zmínil v zápisku)V čem to je lepší než přišpendlení nonce?
Navíc, pokud se nemýlím, tak vámi navržený útok nemůže fungovat - protože projde pouze kombinace (token, cookie) či (token', cookie'), nikoliv (token', cookie).Naopak, můžete poslat jen (cokoliv, cookie), protože cookie tam dodá prohlížeč. To byla Vaše základní premisa a na tom to celé stojí (a padá:)
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.