Может ли кто-нибудь мне сказать, безопасна ли эта хранимая процедура от SQL-инъекции?Эта хранимая процедура безопасна от SQL-инъекции?
Я использую трехуровневую архитектуру и отправляю только необходимые параметры для вставки, обновления и удаления.
Если это не безопасно от 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
Почему у вас есть общая хранимая процедура, которая принимает тип действия? У вас должны быть отдельные sprocs для вставки/обновления/удаления, чтобы сделать вашу жизнь проще. Подумайте о том, что произойдет, когда вы начнете строить это, это может стать кошмаром для поддержания. Говорить что-то не страдает от какого-то взлома, рискованно, почти все может быть взломано. Похоже, вы используете параметры для передачи в sproc, и эти данные как-то проверены на стороне клиента/сервера, чем нет, у вас не будет SQL-инъекции. Но вам нужно отделить это. – JonH
Я согласен с JonH. Это не имеет никакого смысла. –
StoredProcedure - все это кошмар для поддержания. Для простых запросов, подобных приведенным выше, в вашей программе более чем достаточно (предупреждение: opionions, мнения) – Steve