( erdsiger | 2009. 06. 13., szo – 22:05 )

Egy adatbázis kérést kétféleképpen lehet megírni Joomlában:

Az első módszer, ez gondolom mindenki számára ismerős:

$id = $_GET['id'];
$query = 'SELECT * FROM jos_articles WHERE id = '. $id;

A második módszer pedig:

$id = JRequest::getInt('id', 0, 'get');
$query = 'SELECT * FROM '. $db->nameQuote('jos_articles') .'WHERE '. $db->nameQuote('id') .' = '. $db->Quote($id);

Ennél a kódnál a JRequest::getInt() biztosítja, hogy csak számot kapjon meg változóból, és a $query-ben is ki vannak védve a sebezhetőségek. Azért már ne a Joomla legyen a felelős, hogy egyes bővítménykészítők egyszerűbbnek találják az első változatot... A Joomla! 1.6 Alpha verziója 9 nap múlva jelenik meg és lesz benne egy query builder (elnézést, nem tudom a pontos magyar megfelelőjét), hogy méginkább csökkentse a fejlesztői hibákat. Egyébként ha megnézed a biztonsági jelentéseket, SQL injekciós sebezhetőség nem mostanában volt, főkent alacsony szintű XSS és CSRF hibák voltak.