パラメータ化された静的/コードSQLステートメントはSQLインジェクション攻撃の対象になりますか?
たとえば、次の簡略化されたストアドプロシージャがあるとします。入力@PSeries_descを渡しているという事実は、パラメータ化されている場合、インジェクション攻撃を受けることを意味しますか?以前は、これは動的SQLステートメントであり、コードはsp_executesqlexec
ではなくを使用して実行されていたため、攻撃に対して確実にオープンでした。
CREATE procedure get_product_by_title
@PSearchType int = NULL
, @Pseries_desc varchar(40) = NULL
as
begin
declare
@whereLikeBeg varchar(1)
, @whereLikeEnd varchar(1)
set @whereLikeBeg = ''
set @whereLikeEnd = ''
if @search_code = 'contains'
begin
set @whereLikeBeg = '%'
set @whereLikeEnd = '%'
end
if @search_code = 'starts_with'
begin
set @whereLikeEnd = '%'
end
select
distinct B.parent_product_id
, B.parent_product_id
from
tableA
where
parent_product_id = child_product_id
and product_title like @whereLikeBeg + @Pseries_desc + @whereLikeEnd
end