有谁能告诉我,这个存储过程是否可以安全地从SQL注入?
我使用的是3层架构,只发送插入,更新和删除操作所需的参数。
如果这对SQL注入不安全,那么我该如何使其安全?
CREATE PROCEDURE [dbo].[spStudent]
@parmID int = null,
@parmName varchar(50) = null,
@parmClass int = null,
@parmSection varchar(1) = null,
@parmYear varchar(15) = null,
@parmIsActive bit = null,
@parmAction varchar(50)
AS
BEGIN
begin
if @parmAction = 'insert'
insert into tblStudent
values (@parmName, @parmClass, @parmSection, @parmYear, @parmIsActive)
end
begin
if @parmAction = 'update'
update tblStudent
set StdName = @parmName,
ClassID = @parmClass,
Section = @parmSection,
Year = @parmYear,
IsActive = @parmIsActive
where StdID = @parmID
end
begin
if @parmAction = 'delete'
delete from tblStudent
where StdID = @parmID
end
END
答案 0 :(得分:1)
是。 SQL注入非常安全。 只要您对每个值进行参数化,就是安全的。
然而,正如JonH所述,您的存储过程并没有多大意义(如果有的话)。它可能最终会成为维护的噩梦。
恕我直言,你根本不应该使用存储过程进行简单的插入/更新/删除。