次の SQL は、@SearchWord パラメーターを介した SQL インジェクションの影響を受けやすいですか?
FormsOf 関数でパラメーターを使用したいのですが、私が見つけた唯一のガイドは、このスタック オーバーフローの質問にあります: How to pass parameter to FormsOf function in sql server
ただし、解決策は少し動的 SQL を使用することであると思われ、それが SQL インジェクションの影響を受けやすいかどうか疑問に思っていました。次の例で、@searchWord に SQL インジェクション タイプの文字列が含まれている場合はどうなるでしょうか? FREETEXTTABLE に引数として渡されたパラメーター内にあるため、問題ではないでしょうか?
与えられた解決策は次のとおりです。
DECLARE @SearchWord nvarchar(max)
SET @SearchWord = 'tax'
DECLARE @SearchString nvarchar(max)
SET @SearchString = 'FormsOf(INFLECTIONAL, "' + @SearchWord + '")'
SELECT listing_id, RANK, name, address, city, zip, heading, phone
FROM listings a,
FREETEXTTABLE(listings, *, @SearchString)
WHERE [KEY] = a.listing_id
ORDER BY RANK DESC, name