Backport(バックポート) #2393
closed部分一致検索を行う箇所でワイルドカード検索ができてしまう
100%
Description
Overview (現象)¶
メンバー画面の「メンバー検索」や「コミュニティ検索」、あるいは管理画面の「メンバー管理」などでは、ニックネームやキーワード等で部分一致検索が行える。ここで、アンダースコア("_")やパーセント("%")を含めて検索すると、文字としてではなくメタ文字(ワイルドカード)として検索が行なわれてしまう。
これは仕様と考えれば問題ではないと言えるが、この動作は意図した仕様ではなく、不具合として扱うべきであると考えられる。
Causes (原因)¶
LIKE検索を行っている箇所では
$query->addWhere('name LIKE ?', '%'.$value.'%');
のように(部分一致)検索文字列として入力された値を直接渡しているためメタ文字がそのままメタ文字として扱われてしまっている。
Way to fix (修正内容)¶
LIKE検索は関数化されていない(LIKEメソッドがあるわけではない)ため、LIKE文を用いている箇所全てで入力文字列中のメタ文字をエスケープするか、最終的にSQLが生成される時点でエスケープを施すという対応が考えられる。
具体的な修正箇所や修正方針については検討できていない。
Note (補足)¶
バックスラッシュを含む文字列での検索についての挙動も気になる。例えば "foo\bar" というニックネームのメンバーがいる場合、メンバー検索で "foo" と検索すればヒットするが、 "foo\" と検索してもヒットせず、 "foo\\" と検索するとヒットするような動作を確認している。
Updated by Kousuke Ebihara over 13 years ago
- Tracker changed from Bug(バグ) to Backport(バックポート)
- Status changed from Pending Review(レビュー待ち) to New(新規)
- Target version changed from 1.0.2 to 0.9.9
Updated by Yuya Watanabe about 13 years ago
- Target version changed from 0.9.9 to 0.9.x
Updated by Yuma Sakata almost 13 years ago
- Assignee deleted (
Hiroshi Kato)
再現確認できました。
Environment (再現バージョン)¶
OpenPNE3.4.20
Way to repro (再現手順)¶
1. アンダースコアを含むコミュニティトピック、含まないコミュニティトピック(例:a_123、ab123、x_123、xb123)を作成する
2. コミュニティトピックリストページ(/pc_backend.php/communityTopic/topicList)にアクセスする
3. 手順1で作成したアンダースコアを含むコミュニティトピック(例:a_123)を検索する
4. アンダースコアを含まないトピック(ab123)が検索にヒットする
Way to fix (修正内容)¶
アンダースコアを含むコミュニティトピックのみ(a_123のみ)検索結果にヒットするように修正お願いします。
Updated by Yuma Sakata almost 13 years ago
- Target version changed from 0.9.x to 0.9.10
Updated by Minoru Takai almost 13 years ago
- Status changed from New(新規) to Pending Review(レビュー待ち)
- % Done changed from 0 to 50
Updated by Kousuke Ebihara almost 13 years ago
- Status changed from Pending Review(レビュー待ち) to Pending Testing(テスト待ち)
- % Done changed from 50 to 70
Updated by Yuma Sakata almost 13 years ago
- Status changed from Pending Testing(テスト待ち) to Fixed(完了)
- % Done changed from 70 to 100
テストOKです。