Closed eggplants closed 2 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 にあるかわかりませんが、何らかのエスケープ処理が必要だと思います。
sanitize_sql_like
@eggplants eggplantsさん、こちら報告ありがとうございました!この手の事象は自分では気づきづらいので、報告とても助かりました。
発生していた不具合に対処し、報告されたエラーが起こらないことを確認しました。エラーが発生していた原因はPRの方に記載してあります。
Issueはクローズとします。これからもよろしくお願いします。
概要
記事検索にて、
%
で検索すると全ての記事がヒットします。%
: 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 にあるかわかりませんが、何らかのエスケープ処理が必要だと思います。