Szorítsuk sarokba az űrlaphamisítókat

A JoomlaWiki wikiből

A hivatalos neve webhelyek közti kéréshamisítás (Cross Site Request Forgery - CSRF), de röviden csak űrlaphamisításnak nevezzük. A megfelelő feltételek mellett egy személy olyan dolgokat is megtehet, amire nem is gondolnánk.

A támadások legnagyobb része a Kapcsolat űrlapon keresztül történik. Nagyon könnyű bárkinek elkészíteni az űrlap módosított változatát és ezáltal üzeneteket küldeni a szerveren keresztül. Tulajdonképpen sikerült végrehajtani ezt a támadást a Joomla! Kapcsolat űrlapján is, kihasználva a másolat (carbon copy - cc) beállítást (ez már nem lehetséges a javításnak köszönhetően).

A támadások másik formája az, amely akkor hajtódik végre, ha be vagyunk jelentkezve a Joomla! adminisztrációs felületére és eközben rákattintunk egy hivatkozásra (pl. e-mailben vagy egy weboldalon).

Természetesen számos egyéb támadási forma létezik. Akárhogy is, a problémákkal szembeszállva a Joomla! segítségére lehet az úgynevezett Session Token. A beépítése nagyon egyszerű – csak néhány sornyi kód, mindenki lelki nyugalmára.

Az 1. lépés a kód hozzáadása az űrlaphoz, és megbizonyosodás arról, hogy az POST metódust használ.

  1. <form method="post" action="<?php echo JRoute::_( 'index.php?option=com_test' );?>">
  2.   <input type="hidden" name="task" value="save" />
  3.   <input type="hidden" name="<?php echo JUtility::getToken() ?>" value="1" />
  4. </form>

A 2. lépés a Session Token ellenőrzés hozzáadása a komponenshez, hasonlóan ehhez:

  1. /**
  2. * Form mentése
  3. */ 
  4. function save() {
  5.   // Token kód ellenőrzése
  6.   $token        = JUtility::getToken();
  7.   if(!JRequest::getInt($token, 0, 'post')) {
  8.     JError::raiseError(403, 'Request Forbidden');
  9.   }
  10.   // További kód
  11. }

Ez minden ahhoz, hogy bezárjunk néhány hátsó kaput a támadókkal szemben. További információkért érdemes elolvasni Chris Shiftlett cikkét.

A cikk forrása: The Art of Joomla!