User Tools

Site Tools


csrf

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
csrf [2023/12/04 16:53] lsscsrf [2025/12/01 11:40] (current) – external edit 127.0.0.1
Line 1: Line 1:
 ====CSRF===== ====CSRF=====
  
-CSRF (Cross site request forgery) je vrsta napada koja iskorištava ranjivost nastalu zbog ne razlikovanja autentičnih zahtjeva korisnika od krivotvorenih.+**CSRF** (//Cross site request forgery//) je vrsta napada koja iskorištava ranjivost nastalu zbog nerazlikovanja autentičnih zahtjeva korisnika od krivotvorenih. Najjednostavniji primjer je sljedeći:
  
-Najjednostavniji primjer jest sljedeći: +Zamislimo da se na adresi <code>www.example.com</code> nalazi bankarska aplikacija koja ima funkcionalnost gdje se slanjem GET zahtjeva
- +
-Zamislimo da se na adresi <code>www.example.com</code> nalazi bankarska aplikacija koja ima funkcionnalnost gdje se slanjem GET zahtjeva+
  
 <code>www.example.com/transfer?amount=1000&to=receiver_username</code> <code>www.example.com/transfer?amount=1000&to=receiver_username</code>
Line 12: Line 10:
 Napadač može prilagoditi parametre //amount// i //to// u URL-u i poslati takav link žrtvi. Klikom na link, žrtva bi poslala novce napadaču. Napadač može prilagoditi parametre //amount// i //to// u URL-u i poslati takav link žrtvi. Klikom na link, žrtva bi poslala novce napadaču.
  
-Ovaj napad je moguće izvesti kreiranjem lažne stranice čime se on dodatno prikrije. Recimo da napadač istraži izgled obrasca POST metodom na stranici <code>www.napadacevastranica.test</code> i on bude izgleda:+Napad bi potencijalno bio moguć i da funkcionalnost koristi POST zahtjevPretpostavimo da bankarska aplikacija koristi formu sljedećeg izgleda:
  
-<code> +<code html> 
- <form action="www.example.com/transfer" method="GET">+ 
 + <form action="/transfer" method="POST">
  <label for="amount">Amount: </label>  <label for="amount">Amount: </label>
  <input type="text" name="amount" id="amount"/>  <input type="text" name="amount" id="amount"/>
Line 22: Line 21:
  <input type="submit"/>  <input type="submit"/>
  </form>  </form>
 +
 +
 </code> </code>
 +
 +Zatim kreira svoju lažnu stranicu te na njoj postavi sljedeći obrazac:
 +<code html>
 + <form action="https://www.example.com/transfer" method="POST">
 + <input type="hidden" name="amount" value="1000"/>
 + <input type="hidden" name="to" value="attacker">
 + <input type="submit" value="REGISTER">
 + </form>
 +</code>
 +
 +Kada bi žrtva posjetila napadačevu stranicu i pokušala se registrirati klikom na gumb REGISTER, poslala bi zahtjev POST prema <code>www.example.com/transfer</code> s parametrima amount i to postavljenim na "1000" i "attacker".
 +
 +No, slanje ovog zahtjeva je moguće automatizirati tako da ga žrtva pošalje samim posjetom stranice. Npr. dodavanjem funkcije submit u onload atribut u body elementu:
 +
 +<code html>
 +<body onload="document.forms[0].submit()">
 + <form...>
 + ...
 + </form>
 +</body>
 +</code>
 +
 +Ako je žrtva u trenutku kada posjeti napadačevu stranicu prijavljena u bankarsku aplikaciju i ako je ta aplikacija ranjiva na CSRF napade, novac bi se sa žrtvinog računa prebacio na napadačev.
 +
 +Osnovni razlog za CSRF napade je da web aplikacija nema implementirane mehanizme po kojima bi mogla razlikovati legitimne od nelegitimnih zahtjeva.
 +
 +Najbolja zaštita od ovakvih napada je korištenje CSRF tokena. To su nasumično generirane vrijednosti čija
 +u sjednicu korisnika svakim novim zahtjevom i imaju kratak period trajanja. Unutar svakog novog zahtjeva klijent šalje predani token natrag nakon čega poslužitelj provjerava njegovu validnost. Ako je vrijednost ispravna, zahtjev se izvršava i postavlja se novi token. Budući da (ako su CSRF tokeni ispravno implementirani) napadač ne može pogoditi vrijednost CSRF tokena, ne može ni lažirati korisnički zahtjev. CSRF tokeni se često ne postavljaju u [[HTTP]] GET zahtjeve zbog čega je bitno da se GET zahtjevima ne može mijenjati stanje u aplikaciji.
 +
 +
 +
  
csrf.1701708816.txt.gz · Last modified: 2025/12/01 11:40 (external edit)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki