sora32127/healthy-person-emulator-dotorg

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

Closed this issue · 1 comments

概要

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

%: 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句に検索キーワードを埋め込む際にエスケープしていないことで発生しています。

where ${Prisma.raw(separatedQuery.map((query) => `post_title like '%${query}%'`).join(" AND "))}

where ${Prisma.raw(separatedQuery.map((query) => `post_title like '%${query}%'`).join(" AND "))}

対応案

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

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

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

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