ajaxSearchの脆弱性対応ために、いくつかのサイトでアップデートを行なったのですが、その際に気付いた不具合について、ご報告したいと思います。
ajaxSearch 1.9.3 → 1.10.1J
において、
あまり活用することが無いので発現し辛いようですが、
&withTvs = `-:tv1,tv2,tv3`
などのようにパラメータ &withTvsを+とか-指定して運用しているケースでは、
------------------------------
Execution of a query to the database failed - You have an error in your SQL syntax; 〜
SQL > SELECT GROUP_CONCAT( DISTINCT name SEPARATOR FROM ) AS list WHERE 〜
------------------------------
のようなsqlのシンタックスエラーが出ると思います。
その原因は、
classses/ajaxSearchRequest.class.inc.php
の698行目
コード: 全て選択
$rs = $modx->db->select("GROUP_CONCAT( DISTINCT name SEPARATOR "," ) AS list", $tblName, "type='text'");
コード: 全て選択
$rs = $modx->db->select("GROUP_CONCAT( DISTINCT name SEPARATOR ',' ) AS list", $tblName, "type='text'");
update前の1.9.3では、以下のように、$modx->db->selectを利用していないので問題がなかったみたいです。
コード: 全て選択
$sql = 'SELECT GROUP_CONCAT( DISTINCT name SEPARATOR "," ) AS list FROM ' . $tblName . ' WHERE type=\'text\'';
修正を検討いただけると幸いです。
-----
ご利用のサーバ:(省略)
MODXのバージョン:1.0.10Jとか1.0.12J-r1とか。
PHPのバージョン:5.3系
MySQLのバージョン:5.0系、5.1系
ブラウザ:(省略)
-----