Joomla解説サイト

  • Decrease font size
  • Default font size
  • Increase font size
Home arrow 備忘録 arrow ExtensionHack arrow Community Builderのフィルタ
Community Builderのフィルタ

Community Builderのフィルタ機能で、日本語を設定するとうまく抽出されないようです。

まず、検索にヒットしない原因は、
フィルタの文字列をs(`cb_memo` ='%u30B6')という形式で保存している
この%u30B6を数値文字参照(& #12470;のように)変換していて、
この数値文字でSQLを検索しているのでデータが該当しない

数値文字参照に変換しているのは
comprofiler.class.phpのutf8RawUrlDecode関数です。

ここを修正することでうまくいくかと思ったのですが、
数値文字参照から実体に変換するのが困難でした。

逆に、そもそもs(`cb_memo` ='%u30B6')
という形式で保存する必要は無いのでは?と思いました。

s(`cb_memo` ='ほげほげ')と保存するようにして、
utf8RawUrlDecodeを行っているところをすべて修正すればOKなのではないでしょうか。

■エスケープしている箇所
admin.comprofiler.html.php

moveOption3関数

if(condition!='' && condition!=null) condition="'"+escape(condition)+"'";

if(condition!='' && condition!=null) condition="'"+(condition)+"'";
と、escapeをとってしまえばうまくいくようです。

この修正により、エスケープしなくなりますので、
sqlで利用できないような文字列は使用できないかと思います。

>確認したいんですが、修正により、エスケープされなくなるというのは、セキュリティ上は、あまり良くないってことでしょうか??

いえ。管理画面なので、セキュリティは大丈夫と思います。
フィルタに設定する文字列によっては、保存の際におかしな動きをすることもあるのかなぁという予想です。

コメント
newsearch
コメントを書く
名前:
ホームページ:
タイトル:
UBBCode:
[b] [i] [u] [url] [quote] [code] [img] 
 
Security Image
イメージから読み取れるコードを入力してください。

Copyright (C) 2007 Alain Georgette / Copyright (C) 2006 Frantisek Hliva. All rights reserved.

 

言語選択(lang)


■Joomla!利用可能