abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    včera 23:11 | IT novinky

    Akcionáři americké mediální společnosti Warner Bros. Discovery dnes schválili převzetí firmy konkurentem Paramount Skydance za zhruba 110 miliard dolarů (téměř 2,3 bilionu Kč). Firmy se na spojení dohodly v únoru. O část společnosti Warner Bros. Discovery dříve usilovala rovněž streamovací platforma Netflix, se svou nabídkou však neuspěla. Transakci ještě budou schvalovat regulační orgány, a to nejen ve Spojených státech, ale také

    … více »
    Ladislav Hagara | Komentářů: 0
    včera 22:33 | Nová verze

    Canonical vydal (email, blog, YouTube) Ubuntu 26.04 LTS Resolute Raccoon. Přehled novinek v poznámkách k vydání. Vydány byly také oficiální deriváty Edubuntu, Kubuntu, Lubuntu, Ubuntu Budgie, Ubuntu Cinnamon, Ubuntu Kylin, Ubuntu Studio, Ubuntu Unity a Xubuntu. Jedná se o 11. vydání s dlouhodobou podporou (LTS).

    Ladislav Hagara | Komentářů: 0
    včera 11:55 | Nová verze

    V programovacím jazyce Go naprogramovaná webová aplikace pro spolupráci na zdrojových kódech pomocí gitu Gitea (Wikipedie) byla vydána v nové verzi 1.26.0. Přehled novinek v příspěvku na blogu.

    Ladislav Hagara | Komentářů: 0
    včera 04:44 | Pozvánky

    Ve středu 29. dubna 2026 se v pražské kanceláři SUSE v Karlíně uskuteční 7. Mobile Linux Hackday, komunitní setkání zaměřené na Linux na mobilních zařízeních, kernelový vývoj i uživatelský prostor. Akce proběhne od 10:00 do večerních hodin. Hackday je určen všem zájemcům o praktickou práci s Linuxem na telefonech. Zaměří se na vývoj aplikací v userspace, například bankovní aplikace, zpracování obrazu z kamery nebo práci s NFC, i na úpravy

    … více »
    lkocman | Komentářů: 1
    22.4. 21:55 | Nová verze

    LilyPond (Wikipedie) , tj. multiplatformní svobodný software určený pro sazbu notových zápisů, byl vydán ve verzi 2.26.0. Přehled novinek v aktualizované dokumentaci.

    Ladislav Hagara | Komentářů: 0
    22.4. 20:33 | Nová verze

    Byla vydána nová verze 11.0.0 otevřeného emulátoru procesorů a virtualizačního nástroje QEMU (Wikipedie). Přispělo 237 vývojářů. Provedeno bylo více než 2 500 commitů. Přehled úprav a nových vlastností v seznamu změn.

    Ladislav Hagara | Komentářů: 0
    22.4. 13:33 | IT novinky

    Společnost SpaceX amerického miliardáře Elona Muska oznámila, že si zajistila opci buď na akvizici startupu Cursor za 60 miliard dolarů (přes 1,2 bilionu Kč) do konce letošního roku, nebo na zaplacení deseti miliard dolarů za nové partnerství s touto firmou zabývající se generováním kódů. SpaceX se dále prosazuje na lukrativním trhu s vývojářskými nástroji pro umělou inteligenci (AI). Cursor, startup zabývající se prodejem modelů AI pro

    … více »
    Ladislav Hagara | Komentářů: 2
    22.4. 13:11 | Komunita

    Díky AI modelu Claude Mythos Preview od společnost Anthropic bylo ve Firefoxu nalezeno a opraveno 271 zranitelností.

    Ladislav Hagara | Komentářů: 6
    22.4. 04:44 | Nová verze

    Byla vydána nová verze 2.54.0 distribuovaného systému správy verzí Git. Přispělo 137 vývojářů, z toho 66 nových. Přehled novinek v příspěvku na blogu GitHubu a v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    22.4. 04:33 | Nová verze

    Grafana (Wikipedie), tj. open source nástroj pro vizualizaci různých metrik a s ní související dotazování, upozorňování a lepší porozumění, byla vydána ve verzi 13.0. Přehled novinek v aktualizované dokumentaci a na YouTube. Stalo se tak na konferenci GrafanaCON 2026.

    Ladislav Hagara | Komentářů: 0
    Které desktopové prostředí na Linuxu používáte?
     (14%)
     (8%)
     (2%)
     (13%)
     (30%)
     (3%)
     (6%)
     (2%)
     (15%)
     (25%)
    Celkem 1396 hlasů
     Komentářů: 30, poslední 3.4. 20:20
    Rozcestník
    Štítky: není přiřazen žádný štítek


    Vložit další komentář
    28.1.2010 03:45 retro
    Rozbalit Rozbalit vše Re: PHP: CSRF Protection class
    Vaše řešení je špatné.

    Zkuste se přihlásit na kteroukoliv libovolnou vysokou technickou školu. Tam vám řeknou proč.
    gogloid avatar 28.1.2010 05:50 gogloid | skóre: 10 | blog: Tomášovy poznatky | Kladno/Brno
    Rozbalit Rozbalit vše Re: PHP: CSRF Protection class
    Už se stalo a ještě neřekli. Mohl byste to rozvést? Já plánuji tuto třídu používat; a tedy pokud tam je něco, co to činí nebezpečné, tak bych o tom rád věděl.
    28.1.2010 06:26 Mrkva | skóre: 22 | blog: urandom
    Rozbalit Rozbalit vše Re: PHP: CSRF Protection class
    No, kód jsem nějak dlouho nestudoval. <flamebait>Ale to bude tím, že to je v PHP </flamebait>
    We lived, we danced, we raced, we run, from the oblivion to come, Dressed for the last dance of a hundred thousand suns.
    28.1.2010 06:35 retro
    Rozbalit Rozbalit vše Re: PHP: CSRF Protection class
    Nehodlám tu psát vyčerpávající návod, který by mne stál plno času. Místo toho, pokud máte zájem, se podívejte, jak tuto problematiku řeší třetí strany.
    28.1.2010 08:31 pht | skóre: 48 | blog: pht
    Rozbalit Rozbalit vše Re: PHP: CSRF Protection class
    Mě by ten návod docela zajímal. Bejt tajemnej jak hrad v karpatech akorát snižuje vypovídací hodnotu Vašeho příspěvku na nulu.

    Vaše třetí strany to řeší v lepším případě úložištěm na serveru, čemuž se chtěl zdejší autor vyhnout.

    Což neznamená, že nemám o zdejším kódu své pochybnosti, ale to hlavně proto, že je to implementace vlastního krypto schematu, jehož důsledky nejsem schopnej dohlédnout. Ale to samé platí o Vás a Vašem kódu třetí strany.
    In Ada the typical infinite loop would normally be terminated by detonation.
    Integral avatar 28.1.2010 08:24 Integral | blog: devnull
    Rozbalit Rozbalit vše Re: PHP: CSRF Protection class

    a ty nam nereknes, proc je spatne?

    28.1.2010 09:09 fraxinus | skóre: 20 | blog: fraxinus
    Rozbalit Rozbalit vše Re: PHP: CSRF Protection class
    Suhlasim s retro, je to uplne spatne. Navyse je to prekomplikovane zlozite.
    ...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)

    WTF?

    Asi by ste si mali znova prestudovat co je to CSRF.
    gogloid avatar 28.1.2010 09:22 gogloid | skóre: 10 | blog: Tomášovy poznatky | Kladno/Brno
    Rozbalit Rozbalit vše Re: PHP: CSRF Protection class
    Tady mi jde o to, že pokud by byl útočník schopen podvrhnout cookie a dodat vlastní token, tak by musel za A) vytvořit vlastní token a kontrolní cookie na svém serveru (kde útočník neví, jak přesně se to dělá) nebo za B) zjistit jinou funkční dvojici - právě proto ta kontrola IP (aby pokud by útočník provedl dotaz se stejným User Agent na chráněné stránky ze svého serveru (čímž by získal jak cookie, tak token), tak aby takto získané údaje nefungovaly).
    28.1.2010 09:38 podlesh | skóre: 38 | Freiburg im Breisgau
    Rozbalit Rozbalit vše Re: PHP: CSRF Protection class
    No a co když mu prostě a jednoduše javascript ten token pošle? Tím že se tokeny na serveru neukládají je totiž možné použít jeden token opakovaně - alespoň po dobu platnosti toho tokenu, což ovšem je (a musí!) doba dostatečně dlouhá na napáchání škody.

    Obávám se, že ukládání tokenů na serveru je nutnost, kterou nelze obejít.
    gogloid avatar 28.1.2010 09:44 gogloid | skóre: 10 | blog: Tomášovy poznatky | Kladno/Brno
    Rozbalit Rozbalit vše Re: PHP: CSRF Protection class
    Ano, ale jak javascript ten token získá? Z cookie ho nelze získat (vzhledem k tomu, jak se vytváří hash, který se vkládá do cookie). Princip CSRF útoku spočívá v tom, že útočník není schopen získat obsah stránky, jen poslat dotaz.
    28.1.2010 12:30 podlesh | skóre: 38 | Freiburg im Breisgau
    Rozbalit Rozbalit vše Re: PHP: CSRF Protection class
    Ale ano, proti samotnému CSRF to jako ochrana zafunguje.

    Ale ta IP adresa se mi stejně nelíbí.

    Mimo jiné - co když jde každý request z jiné IP adresy? Například když tam má několik transparentních proxy, náhodně volených, každá s úplně jinou IP adresou? (Toto je naprosto reálný příklad, takovou konfiguraci mají v jedné nejmenované České bance).
    gogloid avatar 28.1.2010 12:44 gogloid | skóre: 10 | blog: Tomášovy poznatky | Kladno/Brno
    Rozbalit Rozbalit vše Re: PHP: CSRF Protection class
    Přiznávám se, to mě nenapadlo. V ten okamžik, pokud by se ověřování IP v kódu vypnulo, je útočník schopen získat dvojici token -> cookie, ale ještě ho musí podvrhnout - což není také tak snadné, jak je napsáno v posledním odstavci. Na druhou stranu, pokud by se IP nahradila session_id nebo něčím se stejnou rolí, tak by útočník již nebyl schopen novou dvojici získat; nebo, pokud by toto id bylo uloženo u klienta, tak by ho musel nejdřív získat a potom by měl možnost získat funkční dvojici token -> cookie. (nejspíš to tam přidám jako možnost konfigurace, to nahrazení IP za session_id)
    28.1.2010 12:59 pht | skóre: 48 | blog: pht
    Rozbalit Rozbalit vše Re: PHP: CSRF Protection class
    Pokud tam cpete session, tak už můžete rovnou použít tu session k uchování tokenu.
    In Ada the typical infinite loop would normally be terminated by detonation.
    gogloid avatar 28.1.2010 13:20 gogloid | skóre: 10 | blog: Tomášovy poznatky | Kladno/Brno
    Rozbalit Rozbalit vše Re: PHP: CSRF Protection class
    V principu ano; na druhou stranu mým záměrem bylo neukládat token na serveru - nechtěl jsem, aby se tam hromadily.
    28.1.2010 09:56 pht | skóre: 48 | blog: pht
    Rozbalit Rozbalit vše Re: PHP: CSRF Protection class
    IMHO pokud už získáte token z nějakého otevřeného formuláře, tak budete mít možnost ten formulář vyplnit a odeslat ještě dříve než to provede uživatel, takže nebude fungovat ani schema, kdy je neopakovatelný token ověřen proti úložišti na serveru.
    In Ada the typical infinite loop would normally be terminated by detonation.
    28.1.2010 12:00 podlesh | skóre: 38 | Freiburg im Breisgau
    Rozbalit Rozbalit vše Re: PHP: CSRF Protection class
    Ano, to je slabina i ostatních (zde odkazovaných) řešení.
    28.1.2010 09:58 pht | skóre: 48 | blog: pht
    Rozbalit Rozbalit vše Re: PHP: CSRF Protection class
    A co když používají útočník a oběť stejnou IP adresu (NAT, proxy)?
    In Ada the typical infinite loop would normally be terminated by detonation.
    gogloid avatar 28.1.2010 11:45 gogloid | skóre: 10 | blog: Tomášovy poznatky | Kladno/Brno
    Rozbalit Rozbalit vše Re: PHP: CSRF Protection class
    Potom může teoreticky zjistit novou funkční dvojici tokenu plus cookie, ale k podvržení je potřeba infikovat chráněný server, odkud se musí poslat nové cookie (protože by se přepisovalo); nebo, pokud ochrana není zapnutá trvale, alespoň vložit kód do stránky na serveru, který získá cookie ze serveru útočníka (podvrhne ho).
    28.1.2010 12:53 pht | skóre: 48 | blog: pht
    Rozbalit Rozbalit vše Re: PHP: CSRF Protection class
    Váš protokol je zhruba toto:

    C->S: GetForm

    S->C: Form,TimeStamp,Cookie

    kde Cookie=hash(TimeStamp,OldIP,OldUserAgent)

    a

    C->S: PostForm,TimeStamp,Cookie

    a pak server porovná

    Cookie ?==? hash(TimeStamp,NewIP,NewUserAgent)

    a

    TimeStamp + ExpireTime ?<? TimeNow

    a pokud ano, tak akceptuje PostForm.

    Teď si vemte, že útočník může navodit situaci, kde má stejnou IP a UA jako oběť a dokonce to stihne dřív než se posune TimeStamp. Pak javascript běžící na oběti udělá něco takového:

    C->S: GetForm

    S->C: Form,TimeStamp,Cookie=hash(TimeStamp,IP,UA)

    C->U: GetTimeStamp

    U->S: GetForm

    S->U: Form,TimeStamp',Cookie'=hash(TimeStamp',IP,UA)

    U->C: TimeStamp'

    C->S: PostMaliciousForm,TimeStamp',Cookie

    Nemusím nic podvrhovat.

    PS. koukám že jste zlepšil tu ochranu na IP na X-Forwarded-For, to ovšem principielně nic neřeší a navíc jste to "zapoměl" zdokumentovat...
    In Ada the typical infinite loop would normally be terminated by detonation.
    gogloid avatar 28.1.2010 13:18 gogloid | skóre: 10 | blog: Tomášovy poznatky | Kladno/Brno
    Rozbalit Rozbalit vše Re: PHP: CSRF Protection class
    S dokumentací s IP se omlouvám, že není uvedena v dokumentaci (od začátku jsem kód neměnil a použil jsem generický kód).

    V následující úvaze mne prosím opravte, jestli jsem se zmýlil v pochopení vašeho komentáře. Chtěl bych zmínit, že timestamp nelze zjistit (je vložen do tokenu a nelze z něj bez znalosti přesného obsahu třídy). V ten okamžik se obávám, že vámi uvedený postup není funkční, protože neumožňuje zaměnit timestamp za jiný; je tedy nutné podvrhnout cookie, aby šel poslat jiný token.
    28.1.2010 13:38 podlesh | skóre: 38 | Freiburg im Breisgau
    Rozbalit Rozbalit vše Re: PHP: CSRF Protection class
    Počkat, počkat... takže se ve formuláři neposílá nic navíc a celé je to založeno jen na tom, že máme určitý autorizační cookie který je akceptován?

    Pak to nebude fungovat! Podstata CSRF spočívá přeci v tom, že si útočník vlastní formulářová data se správnými cookie (a IP adresou, User-Agent, atd) a server provádí autentizaci (a autorizaci) jen na základě těch cookie.

    Ochrana pak musí spočívat v ověření, že data formuláře patří k tomu cookie - tedy, formulář musí obsahovat nějakou informaci závislou na cookie (a vice versa).

    Přidání dalšího cookie bez změny formuláře vůbec nic nezmění, takový cookie tam vlastně již je - session ID. Poskytne se tím částečná ochrana proti "session-hijacking", ale to je něco jiného.
    gogloid avatar 28.1.2010 13:56 gogloid | skóre: 10 | blog: Tomášovy poznatky | Kladno/Brno
    Rozbalit Rozbalit vše Re: PHP: CSRF Protection class
    Ne, možná jsem se špatně vyjádřil - ve formuláři se samozřejmě posílá autorizační token.
    28.1.2010 14:10 pht | skóre: 48 | blog: pht
    Rozbalit Rozbalit vše Re: PHP: CSRF Protection class
    je vložen do tokenu a nelze z něj bez znalosti přesného obsahu třídy
    To 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
    In Ada the typical infinite loop would normally be terminated by detonation.
    gogloid avatar 28.1.2010 14:23 gogloid | skóre: 10 | blog: Tomášovy poznatky | Kladno/Brno
    Rozbalit Rozbalit vše Re: PHP: CSRF Protection class
    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 token. User Agent je v podstatě jen pro okrasu a IP proto, aby nebylo tak snadné podvržení (již to bylo v diskuzi rozebíráno).
    28.1.2010 14:37 pht | skóre: 48 | blog: pht
    Rozbalit Rozbalit vše Re: PHP: CSRF Protection class
    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 token
    Př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.
    In Ada the typical infinite loop would normally be terminated by detonation.
    gogloid avatar 28.1.2010 14:14 gogloid | skóre: 10 | blog: Tomášovy poznatky | Kladno/Brno
    Rozbalit Rozbalit vše Re: PHP: CSRF Protection class
    Můj protokol funguje zhruba takto:
    C->S: GetForm
    S->C: Form,Token,Cookie=hash(Token,TimeStamp vytvoření,IP,UA,salt)
    a potom:
    C->S: PostForm,Token,Cookie
    a porovnává se
    Cookie ?==? hash(Token,TimeStamp,NewIP,NewUserAgent)
    a TimeStamp + ExpireTime ?<? TimeNow
    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)
    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).
    28.1.2010 14:41 pht | skóre: 48 | blog: pht
    Rozbalit Rozbalit vše Re: PHP: CSRF Protection class
    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á:)
    In Ada the typical infinite loop would normally be terminated by detonation.
    28.1.2010 10:28 fraxinus | skóre: 20 | blog: fraxinus
    Rozbalit Rozbalit vše Re: PHP: CSRF Protection class
    > Tady mi jde o to, že pokud by byl útočník schopen podvrhnout cookie...

    Tak sa utocnik normalne prihlasi (cez cookie) a tie maily zmaze priamo.
    gogloid avatar 28.1.2010 11:49 gogloid | skóre: 10 | blog: Tomášovy poznatky | Kladno/Brno
    Rozbalit Rozbalit vše Re: PHP: CSRF Protection class
    Možná si nerozumíme, ale já si pod pojmem "podvržení cookie" představím nastavení nového cookie či jeho přepsání (na což je potřeba posílat to cookie ze stejné domény) uživatelovi útočníkem, nikoliv získání cookie uživatele (což je, pokud se nemýlím, "harvesting cookie").
    28.1.2010 13:41 podlesh | skóre: 38 | Freiburg im Breisgau
    Rozbalit Rozbalit vše Re: PHP: CSRF Protection class
    Asi by bylo dobré někam dát kompletní aplikačičku s konkrétním použitím, ať je možné konkrétně ukázat problémy.
    vlastikroot avatar 28.1.2010 18:23 vlastikroot | skóre: 24 | blog: vlastikovo | Milevsko
    Rozbalit Rozbalit vše Re: PHP: CSRF Protection class
    Však co to je za brutálnost :-D Na CSRF stačí jakejkoli blbej hash hozenej do formu + uloženej do session + ověření toho hashe. Tak primitivní věc.
    We will destroys the Christian's legion ... and the cross, will be inverted
    Petr Tomášek avatar 29.1.2010 09:09 Petr Tomášek | skóre: 39 | blog: Vejšplechty
    Rozbalit Rozbalit vše Název blogu??? WTF???
    „Tomášovi poznatky“? To je něco jako „mupy mup!“?
    multicult.fm | monokultura je zlo | welcome refugees!
    27.12.2010 19:12 v6ak
    Rozbalit Rozbalit vše Re: PHP: CSRF Protection class
    Většinou stejně je nejlepší použít nástroj z frameworku.

    Založit nové vláknoNahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.