• カテゴリ 気になったこと の最新配信
  • RSS
  • RDF
  • ATOM

ブログ - XCL ログインのなぞ (その2)

XCL ログインのなぞ (その2)

カテゴリ : 
気になったこと
執筆 : 
masa 2008/9/11
その1でコードを変更してみたのだが、よくよく見るとちょっと問題がある。

XoopUserHandler は criteria の条件をエスケープしてくれないので、このままでは脆弱性につながる恐れがある。
修正するとすれば↓のようにする必要がある。

$userHandler =& xoops_gethandler('user');

$criteria =& new CriteriaCompo();
$criteria->add(new Criteria('uname', addslashes(xoops_getrequest('uname'))));
$criteria->add(new Criteria('pass', md5(xoops_getrequest('pass'))));

$userArr =& $userHandler->getObjects($criteria);
$user =& $userArr[0];
(...中略...)

$xoopsUser = $user;


なるほどね。
確かに XoopsObjectHandler は問題ですね...
本来 criteria に渡す際に addslashes などを考慮しなければいけないのはつらい訳で、これでは脆弱性が容易に埋め込まれてしまう...
しかも addslashes は SQL 特有の処理なので criteria の抽象性が失われてしまうし...

Core の部分も XoopsObjectGenericHandler のようにしたいが、それでは影響が大きくなりすぎてしまうので変更できない。
ということで、最初のコードに落ち着いているということかな?

どちらにしても、users に問い合わせをしたいときには
xoops_gethandler('user') ではなく xoops_getmodulehandler('users', 'user') を使え!
というのを覚えておこう >> 自分
  • トラックバック (0)
  • 閲覧 (3671)