Diskuze: autorizace formuláře
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 17 zpráv z 17.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
můžeš to uložit do $_SESSION ... nemusíš nutně používat soubor ani databázi
taky se takovému skriptování zabraňuje pomocí captcha obrázků a podobných těžko oscriptovatelných klikátek
Klasické CSRF viz.: https://cs.wikipedia.org/…uest_forgery
Ochrana proti tomuto je většinou generováním náhodného autorizačního tokenu, ovšem i to není 100%.
Dá se to využít jak na akce závislé odkazech tak i formulářích.
jirka jr - sessions se mi zatím vyhnuly - - nastuduji a asi použiji
uživatel sítě - v podstatě to, co jsem složitě popsal já, vyjádřeno slovy "csrf" a "autorizační token"
Takže víš co máš dělat..
Vygenerovat ho, umístit to skrytého inputu ve formuláři a kontrolovat ho.
ano, jen jsem chtěl jinou metodu, než vlastní systém milionu souborů
Nu, de-facto sessions jsou také miliony souborů (Dle návštěvnosti webu samozřejmě.), ale server se o to stará sám. Takže v tomto případě je opravdu vhodné použít..
(což umí brzdit, když tam těch nepoužitých autorizačních souborů bude třeba v řádu tisíců - každý projít, přečíst a některé smazat)
Ono by se to dalo resit i pomoci js. Do skryteho inputu vlozis nejaky kod zalozeny na datumu a mozna i ip, ktery bude platny 5 min. V php ho pak dekodujes. Nevyhoda, ten js se da rozlustit a posilat pak i pres php platne kody.
už jen z hecu.. takže 1) aby někdo provedl CSRF, musí si prohlédnout html zdroj, aby věděl, jaká data má posílat, a tam si jistě všimne hidden políčka a taky volání onsubmit, takže ani nemusí nic luštit a rovnou se na ten js podívá a zkopíruje si ho 2) kdybych si na úrovni serveru uchovával nějakou informaci o tom, jaký kód už byl použit a znovu bych ho nepovolil, může se mi stát, že mi dva uživatelé na stejné veřejné ip a klidně i stejné vnitřní ip (veřejná ip společná pro celý dům a každý má doma ten stejný router od poskytovatele a tudíž má stejně nastavenou lan) pošlou ve stejný čas formulář a jeden z nich bude mít smůlu, to by možná šlo vyřešit přidáním náhodné sekvence někam do toho auth. kódu, ale tím pádem je mi zbytečné zase uchovávat informaci o použitých kódech; 3) ikdyby to nebylo pět minut, ale méně, třeba půl minuty, a CSRF útočník by byl tak hloupý a nezkopíroval si javascript, tak mu stačí si ten platný kód odchytit a použít a než VYPRŠÍ, stihne klidně odeslat stovky formulářů samosereloadujícím nebo do iframů se množícím spamovacím skriptem; méně než půl minuty bych ale nevolil - pro případ nějakého výpadku konektivity mezi klientem a serverem; 4) sláva - máme hotové spolehlivé a lety ověřené řešení a ty přijdeš a navrhneš řešení nefungující minimálně z důvodů 1), 2) a 3) a v záchvatu sebereflexe - místo neodeslání blábolu, zavření tabu a jití se věnování něčemu rpzumnému - k němu připíšeš nesmyslný důvod, proč to tak nedělat. Mohu poradit - neraď a uč se moudrým býti
CSFR jde obejít i pokud ošetřuješ na straně serveru. Proto můj poznatek
v předchozím příspěvku, že ochrana není 100% (Jistě na vše to tak
platí.), ale útočníka to zpomalí či omezí chceš-li.
Samozřejmě, že neobhajuji řešení pomocí JS, v tomto případě je zcela
nesmyslné a základ je mít vždy ochranu na straně serveru jako přednostní.
JS řešit až v případě kdy je hotova serverová část.. Btw web by měl
být 100% funkční bez JS..
Také vázat autorizační tokeny na IP je blbost. Takže řešit zda se připojí někdo ze stejné IP ve stejný moment je zcela irelevantní..
Ono, jde nachystat pasticku. Pouzit obe reseni. Session + js. Zkontrolovat oba vysledky. Pokud to hacker zkusi obejit, muzes si to do logu poznacit jako podezrelou aktivitu. Ale hackeri jsou vetsinou chytrejsi
a von to udělá zas, napíše nějakou blbost a vyloučí si ji hele, hackere, hraj si chvilku s tímhle:
http://pupek.wz.cz/…r/index.html
jestli se ti povede odhalit nějaké nekorektní chování nebo propašovat do výstupu třeba nějakej script, dej echo, chci aby při ostrém nasazení fungoval bezchybně
Hmm, proč ho napadáš? Řešíme snad ochranu proti CSFR a né vkládání externího JS do obsahu stránky..
napadání imho vypadá trošku jinak, spíš bych se pozastavil nad psaním nepřínosných příspěvků, ale zase v něm vidím elán a chuť nacházet neobvyklá řešení, tak mě napadlo, že by byl dobrej betatester pro html parser -- tak proč toho nevyužít - byl položen dotaz a byl vyřešen, pokud se někomu chce diskutovat dále - třeba i o mimozemšťanech - nevidím problém
Zobrazeno 17 zpráv z 17.