Die*_*kes 4 c# sql ado.net sql-injection
将SQL参数单独传递给存储过程是否确保不会发生SQL注入或者还需要执行类型检查?
作为示例 -
ADO.NET代码:
Database DBObject = DataAccess.DAL.GetDataBase();
DbCommand command = DBObject.GetStoredProcCommand("usp_UpdateDatabase");
List<DbParameter> parameters = new List<DbParameter>();
parameters.Add(new SqlParameter("@DbName", txtName.Text));
parameters.Add(new SqlParameter("@DbDesc", txtDesc.Text));
command.Parameters.AddRange(parameters.ToArray());
rowsAffected = DBObject.ExecuteNonQuery(command);
Run Code Online (Sandbox Code Playgroud)
SP:
ALTER PROCEDURE [dbo].[usp_GetSearchResults]
-- Add the parameters for the stored procedure here
@DbName NVARCHAR(50) = ''
,@DbDesc NVARCHAR(50) = ''
AS
BEGIN
SET NOCOUNT ON;
SELECT [RegionName]
,[AppName]
FROM [ApplicationComponent]
WHERE [DBName] LIKE ('%' + @DbName+ '%')
OR [DBDesc] LIKE ('%' + @DbDesc+ '%')
END
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,我没有提到任何参数类型或验证逻辑.它仍然会进行SQL注入吗?
谢谢你的指导!
| 归档时间: |
|
| 查看次数: |
507 次 |
| 最近记录: |