来自DAL的示例代码:
我使用c#和SQL SERVER作为数据库。
我编写了Database对象的单例和示例 从mssql中删除程序的功能, 使用DbCommand和Database-AddInParameter
我找到了关于参数和sql注入的主题但是 我想知道这种具体方式
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);
}
感谢
答案 0 :(得分:2)
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;