gpt4 book ai didi

c# - 这种执行过程的方式对 SQL 注入(inject)是安全的吗?

转载 作者:行者123 更新时间:2023-11-30 23:11:32 24 4
gpt4 key购买 nike

来自 DAL 的示例代码:

我正在使用 C# 和 SQL SERVER 作为数据库。

我写了数据库对象的单例,和例子从 mssql 执行过程的函数,使用 DbCommand 和 Database-AddInParameter

我找到了谈论参数和 sql 注入(inject)的话题,但是我想了解一下具体的方式

private Database m_db;
public Database getDB
{
get
{
if(m_db == null)
m_db = DatabaseFactory.CreateDatabase("ConnectionString");
return m_db;
}
}


public void Example(string Name)
{
DbCommand dbcmd = getDB.GetStoredProcCommand("dbo.Example");
getDB.AddInParameter(dbcmd, "p_Name", DbType.String, Name);
getDB.ExecuteNonQuery(dbcmd);
}

谢谢

最佳答案

dbo.Example 过程肯定仍然可以执行不安全的查询,例如:

create proc dbo.Example (@pName varchar(100))
as
declare @cmd varchar(max);
set @cmd = 'select Somedata from Sometable where Somecolumn = '+ @pName;
exec (@cmd);

安全代码在查询中完全将 proc 参数用作参数

create proc dbo.Example (@pName varchar(100))
as
select Somedata from Sometable where Somecolumn = @pName;

关于c# - 这种执行过程的方式对 SQL 注入(inject)是安全的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44624094/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com