参数化的静态/代码 SQL 语句是否会受到 SQL 注入攻击?
例如,假设我有以下简化的存储过程:我传递输入@PSeries_desc 是否意味着如果参数化了我会受到注入攻击?以前,这是一条动态 SQL 语句,并且代码是使用exec
而不是sp_executesql执行的,所以它肯定容易受到攻击。
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