sora32127 / healthy-person-emulator-dotorg

健常者エミュレータ事例集のレポジトリです
https://healthy-person-emulator.org/
GNU General Public License v3.0
15 stars 4 forks source link

検索キーワードがエスケープされていない #126

Closed eggplants closed 2 weeks ago

eggplants commented 3 weeks ago

概要

記事検索にて、 % で検索すると全ての記事がヒットします。

%: https://healthy-person-emulator.org/search?p=1&orderby=timeDesc&q=%25

また ' / ''' などで検索すると500エラーになります。

': https://healthy-person-emulator.org/search?p=1&orderby=timeDesc&q=%27 ''': https://healthy-person-emulator.org/search?p=1&orderby=timeDesc&q=%27%27%27

原因

これはLIKE句に検索キーワードを埋め込む際にエスケープしていないことで発生しています。

https://github.com/sora32127/healthy-person-emulator-dotorg/blob/7726ff900258628e3c024a9667dbcebde26fae3d/app/modules/search.server.ts#L162 https://github.com/sora32127/healthy-person-emulator-dotorg/blob/7726ff900258628e3c024a9667dbcebde26fae3d/app/modules/search.server.ts#L486

対応案

Activerecord の sanitize_sql_like メソッドのようなものが Prisma にあるかわかりませんが、何らかのエスケープ処理が必要だと思います。

sora32127 commented 2 weeks ago

@eggplants eggplantsさん、こちら報告ありがとうございました!この手の事象は自分では気づきづらいので、報告とても助かりました。

発生していた不具合に対処し、報告されたエラーが起こらないことを確認しました。エラーが発生していた原因はPRの方に記載してあります。

Issueはクローズとします。これからもよろしくお願いします。