[ Príspevkov: 21 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Ochrana proti CSRF

Registrovaný: 26.11.06
Prihlásený: 09.10.24
Príspevky: 4118
Témy: 319 | 319
Bydlisko: HE/BA
NapísalOffline : 01.11.2011 20:37 | Ochrana proti CSRF

Zdravím,

trochu som sa zľakol CSRF a chcem zabudovať ochranu proti tomuto útoku.
Čo viem o ochrane proti CSRF:

Aplikácia odošle spolu s formulárom aj token. Tento token si uloží u seba. Ak sa tokeny po odoslaní formuláru zhodujú, formulár sa spracuje.

Keď útočník odošle formulár, musí ho odoslať bez tokenu, keďže nevie aký je a generovať ho tiež nevie.

Toľko som sa dozvedel. Lenže: ak vie útočník odosielať formulár, vie asi približné fungovanie aplikácie a teda vie čo si má požiadať od servera, kde mu ten token vypíše. Napríklad ak moja aplikácia požiada formulár, tak vytiahne celý html kód formu, kde bude uložený tento token. Tento celý kód si ale vie požiadať aj útočník a vytiahnuť z neho len token. Tento si uloží do premennej a tú následne odosiela s vyplneným "záškodnickým" formulárom.

Ako sa teda proti tomu brániť? Zrejme som niečo nepostrehol, čo skutočne chráni pred CSRF tak mi to prosím vysvetlite. Vďaka.


Offline

Čestný člen
Čestný člen
Ochrana proti CSRF

Registrovaný: 11.08.07
Príspevky: 4088
Témy: 34 | 34
Bydlisko: Brno
NapísalOffline : 01.11.2011 21:24 | Ochrana proti CSRF

Ten token sa praveze vobec nemusi dat vyziadat od servera. Ulozis ho do sessiony, teda bude pre kazdeho pouzivatela jedinecny, plus ho mozes regenerovat pri kazdom requeste/po nejakom case.


Offline

Čestný člen
Čestný člen
Ochrana proti CSRF

Registrovaný: 21.02.06
Prihlásený: 08.12.14
Príspevky: 5404
Témy: 30 | 30
Bydlisko: Bratislava
NapísalOffline : 01.11.2011 22:50 | Ochrana proti CSRF

Presne ako píše Ďuri - ak útočník bude presne vedieť, ako vyzerá tvoj formulár a že tam generuješ nejaký token, nebude vedieť odoslať ten istý token, čo má vygenerovaný (a v session uložený) používateľ, ktorého chce "napadnúť".


_________________
Neradím a nekomunikujem cez SS, ak niečo potrebujete, máte iné možnosti: Ak vám zmizla téma, alebo sa vám niečo nepáči. Ak potrebujete nahlásiť príspevok/človeka, reportujte ho. Ak máte s niečim problém, riešte to v danej téme.
Offline

Užívateľ
Užívateľ
Ochrana proti CSRF

Registrovaný: 26.11.06
Prihlásený: 09.10.24
Príspevky: 4118
Témy: 319 | 319
Bydlisko: HE/BA
Napísal autor témyOffline : 02.11.2011 0:23 | Ochrana proti CSRF

Ako potom overím token, keď ho neodošlem klientovi?


Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 13.11.07
Prihlásený: 20.08.16
Príspevky: 1702
Témy: 0 | 0
NapísalOffline : 02.11.2011 0:28 | Ochrana proti CSRF

Ono to až tak nechráni teba, ako majiteľa servera, ale používateľov, ktorý môžu tvoj server používať (pretože ak by som nejako chcel zneužívať tvoj server, zabrániš mi v tom len veľmi ťažko, pretože sa môžem tváriť ako normálny používateľ a ten CSFR token získam priamo z html kódu).

Ak tam CSFR token máš, tak sťažíš odosielanie formulára cez nejaký podstrčený javascript na inej doméne (ak formulár používa metódu GET, tak stačí výsledné url použiť napr. ako src atribút pri obrázku), pretože ten token nepoznáš (takže nemôžeš predpripraviť URL pri GET metóde a keďže ide o inú doménu, nemáš ako získať html kód, aby si mohol ten token z toho html kódu vybrať).


Offline

Užívateľ
Užívateľ
Ochrana proti CSRF

Registrovaný: 26.11.06
Prihlásený: 09.10.24
Príspevky: 4118
Témy: 319 | 319
Bydlisko: HE/BA
Napísal autor témyOffline : 02.11.2011 19:00 | Ochrana proti CSRF

chrono, poznám teóriu CSRF, ale vysvetli mi, prečo by som nemohol napísať skript, ktorý stiahne formulár, prečíta z neho token a odošle ho spolu s formulárom a tento skript následne podstrčiť prihlásenému používateľovi.


Offline

Čestný člen
Čestný člen
Ochrana proti CSRF

Registrovaný: 11.08.07
Príspevky: 4088
Témy: 34 | 34
Bydlisko: Brno
NapísalOffline : 02.11.2011 19:12 | Ochrana proti CSRF

No lebo nemozes :) ty si mozes precitat nanajvys tak svoj token, ale ini uzivatelia maju iny token.


Offline

Užívateľ
Užívateľ
Ochrana proti CSRF

Registrovaný: 26.11.06
Prihlásený: 09.10.24
Príspevky: 4118
Témy: 319 | 319
Bydlisko: HE/BA
Napísal autor témyOffline : 02.11.2011 19:14 | Ochrana proti CSRF

Ale veď podstrčím kód, ktorý si spustíš ako prihlásený používateľ. Tento kód za Teba požiada formulár na odoslanie správy, tento formulár prečíta a vytiahne z neho token. Okamžite ten token pridá do formuláru, ktorý odošle. Stále to bude vykonávať pod tvojím účtom na tvojom PC.


Offline

Čestný člen
Čestný člen
Ochrana proti CSRF

Registrovaný: 11.08.07
Príspevky: 4088
Témy: 34 | 34
Bydlisko: Brno
NapísalOffline : 02.11.2011 19:17 | Ochrana proti CSRF

Ako si predstavujes to vyziadanie formulara "za mna"? Ak Javascriptom, nedostanes sa k tokenu kvoli cross-origin obmedzeniam. Ak serverom, neziadas ten formular za mna, ale za seba; musel by si sa v tom requeste identifikovat ako ja, v praxi by si vacsinou musel mat moju cookie.


Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 13.11.07
Prihlásený: 20.08.16
Príspevky: 1702
Témy: 0 | 0
NapísalOffline : 02.11.2011 19:18 | Ochrana proti CSRF

A ako by ten skript na stiahnutie formulára vyzeral?


Offline

Užívateľ
Užívateľ
Ochrana proti CSRF

Registrovaný: 26.11.06
Prihlásený: 09.10.24
Príspevky: 4118
Témy: 319 | 319
Bydlisko: HE/BA
Napísal autor témyOffline : 02.11.2011 19:24 | Ochrana proti CSRF

Ďuri, myslel som cez JS, čo presne je to cross-origin obmezdenie? Dá sa na to spoľahnúť?


Offline

Čestný člen
Čestný člen
Ochrana proti CSRF

Registrovaný: 11.08.07
Príspevky: 4088
Témy: 34 | 34
Bydlisko: Brno
NapísalOffline : 02.11.2011 19:29 | Ochrana proti CSRF

Utocnik by mal na stranke iframe, do ktoreho by sa nacitavala stranka s formularom. V takom pripade by som bol naozaj vnutri toho iframe prihlaseny za seba, ale ten token nemas ako precitat, prehliadac by ti akykolvek pristup k atributom objektu <iframe>.contentWindow zakazal, lebo obsah nepochadza z tej istej domeny. A ano, je to spolahlive.


Offline

Užívateľ
Užívateľ
Ochrana proti CSRF

Registrovaný: 26.11.06
Prihlásený: 09.10.24
Príspevky: 4118
Témy: 319 | 319
Bydlisko: HE/BA
Napísal autor témyOffline : 02.11.2011 19:33 | Ochrana proti CSRF

A čo AJAX požiadavka na stránku s formom? Teda nie načítavanie do iframu ale len do premennej. No predpokladám, že to bude podobne. Potom ale ako funguje to CSRF? Jedine cez GET požiadavky. Alebo je možné odosielať POST požiadavku medzi doménami?


Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 13.11.07
Prihlásený: 20.08.16
Príspevky: 1702
Témy: 0 | 0
NapísalOffline : 02.11.2011 19:37 | Ochrana proti CSRF

Post medzi doménami odošleš, problém je, že nemáš ako zistiť správny token (a nefunguje ani Ajax). Ak tam ale žiadny token nemajú, tak to môžeš nejako zneužiť.


Offline

Užívateľ
Užívateľ
Ochrana proti CSRF

Registrovaný: 26.11.06
Prihlásený: 09.10.24
Príspevky: 4118
Témy: 319 | 319
Bydlisko: HE/BA
Napísal autor témyOffline : 02.11.2011 19:40 | Ochrana proti CSRF

Čiže GET medzi doménami nefunguje ale POST už áno?


Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 13.11.07
Prihlásený: 20.08.16
Príspevky: 1702
Témy: 0 | 0
NapísalOffline : 02.11.2011 19:44 | Ochrana proti CSRF

GET samozrejme funguje a určite si ho používal veľmi často aj ty :) (napr. ak používaš jQuery zo stránok googleapis; obrázok z inej domény... a hlavne nejaký reklamný systém, z inej domény)


Offline

Užívateľ
Užívateľ
Ochrana proti CSRF

Registrovaný: 26.11.06
Prihlásený: 09.10.24
Príspevky: 4118
Témy: 319 | 319
Bydlisko: HE/BA
Napísal autor témyOffline : 02.11.2011 19:50 | Ochrana proti CSRF

Pýtam sa na GET a POST medzi doménami požiadavky pomocou AJAX.


Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 13.11.07
Prihlásený: 20.08.16
Príspevky: 1702
Témy: 0 | 0
NapísalOffline : 02.11.2011 19:57 | Ochrana proti CSRF

V takom prípade nefunguje žiadna metóda (a teda GET, POST, PUT, DELETE..., alebo čokoľvek si vymyslíš).


Offline

Užívateľ
Užívateľ
Ochrana proti CSRF

Registrovaný: 26.11.06
Prihlásený: 09.10.24
Príspevky: 4118
Témy: 319 | 319
Bydlisko: HE/BA
Napísal autor témyOffline : 02.11.2011 20:00 | Ochrana proti CSRF

OK, takže jediná možnosť pre CSRF je GET požiadavka napríklad v obrázku alebo v iFrami s vhodnými parametrami v adrese, ak server nepoužíva tokeny?


Offline

Čestný člen
Čestný člen
Ochrana proti CSRF

Registrovaný: 11.08.07
Príspevky: 4088
Témy: 34 | 34
Bydlisko: Brno
NapísalOffline : 02.11.2011 21:20 | Ochrana proti CSRF

Ak server nepouziva tokeny, robis taky request, akym sposobom sa odosielaju data skriptu, ktory ich spracuva. Vacsinou to byva POST, takze by si vytvoril POST request.
Este jedna vec ti nie je mozno jasna: samotne zaslanie requestu nie je problem, vytvoris <form>, nechas ho Javascriptom automaticky odoslat; HTTP metoda moze byt hocijaka (preto v pripade nepouzitia tokenov a/alebo kontroly referera je CSRF jednoducha vec). Cross-origin obmedzenia ti prinesu problem len vtedy, ak sa snazis nieco vytiahnut z cudzej stranky, ktoru si predtym requestoval (preto sa nedostanes k tokenu).


Offline

Užívateľ
Užívateľ
Ochrana proti CSRF

Registrovaný: 26.11.06
Prihlásený: 09.10.24
Príspevky: 4118
Témy: 319 | 319
Bydlisko: HE/BA
Napísal autor témyOffline : 03.11.2011 14:38 | Ochrana proti CSRF

OK, vďaka za info, pomohli ste mi.


 [ Príspevkov: 21 ] 


Ochrana proti CSRF



Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy.

Ochrana proti linkovaniu

v Ostatné

0

727

17.05.2009 1:21

JanoF

V tomto fóre nie sú ďalšie neprečítané témy.

ochrana proti spamu

v PHP, ASP

2

457

23.04.2009 17:38

stenley

V tomto fóre nie sú ďalšie neprečítané témy.

ochrana proti spamerom

v PHP, ASP

11

782

08.02.2008 14:56

Tominator

V tomto fóre nie sú ďalšie neprečítané témy.

Ochrana proti prepisovaniu

v Operačné systémy Microsoft

0

517

11.03.2009 16:20

Pavol.F

V tomto fóre nie sú ďalšie neprečítané témy.

Ochrana proti \n

v PHP, ASP

6

664

11.12.2008 12:49

B.A.X.O

V tomto fóre nie sú ďalšie neprečítané témy.

Ochrana proti zmazaniu súboru

v Ostatné programy

3

1263

07.08.2011 11:13

tairikuokami

V tomto fóre nie sú ďalšie neprečítané témy.

Ochrana proti SQL INJECTION

v PHP, ASP

3

646

16.05.2010 15:29

ac.milan

V tomto fóre nie sú ďalšie neprečítané témy.

MicroSD - ochrana proti zápisu

v Ostatné zariadenia

5

7386

21.08.2008 13:27

fanky112

V tomto fóre nie sú ďalšie neprečítané témy.

USB - Ochrana proti zapisu

v Operačné systémy Microsoft

21

6678

21.10.2013 14:41

shiro

V tomto fóre nie sú ďalšie neprečítané témy.

Ochrana macbookov proti kradnutiu

v Ostatné operačné systémy

4

638

15.05.2012 14:05

El_Silver

V tomto fóre nie sú ďalšie neprečítané témy.

Vista a ochrana proti prepisovaniu

v Operačné systémy Microsoft

1

428

07.04.2009 9:39

shiro

V tomto fóre nie sú ďalšie neprečítané témy.

Ochrana proti vytvoreniu Image-u?

v Ostatné programy

5

523

28.04.2011 14:56

tairikuokami

V tomto fóre nie sú ďalšie neprečítané témy.

Ochrana proti viacnásobnému spúšťaniu skriptu

v JavaScript, VBScript, Ajax

2

553

15.09.2010 20:53

optimista

V tomto fóre nie sú ďalšie neprečítané témy.

USB Kľúč ochrana proti zapisovaniu

v Ostatné zariadenia

4

2341

01.03.2011 20:04

Bennhy

V tomto fóre nie sú ďalšie neprečítané témy.

Ochrana proti SPAMu na phpBB 2

v Redakčné systémy

10

2781

16.01.2007 16:40

AVAST

V tomto fóre nie sú ďalšie neprečítané témy.

P: Nástenný ohrievač, ochrana proti zamrznutiu FKM 400

v Predám

0

342

07.11.2016 21:13

notfake



© 2005 - 2024 PCforum, edited by JanoF