【发布时间】:2014-06-04 05:30:04
【问题描述】:
我正在尝试通过登录表单对我的存储过程进行 sql 注入。 这是我的存储过程
CREATE proc [dbo].[sp_ADM_Login]
@loginName varchar(25),
@password varchar(100)
)
AS
select
l.LoginId,
l.LoginName,
l.LoginType,
l.RG_cCode,
dbo.GetUserName(l.UserDetailsCode, l.LoginType) as [Name],
isnull(l.DefBranchId, 0) as BranchId,
l.DefBranchCode as branchCode,
l.LoginCode as loginCode
from
ADM_Login l
where
LoginName = @loginName and
[Password] = @password and
l.IsActive = 1
我尝试将用户名提供给user' or 1=1--
但它不起作用。是否可以在此代码中进行 sql 注入?
要执行存储过程,这里是C#代码
Database db = DatabaseFactory.CreateDatabase("ConnectionString");
DbCommand cmd = db.GetStoredProcCommand("sp_ADM_Login");
db.AddInParameter(cmd, "@loginName", DbType.String, loginName);
db.AddInParameter(cmd, "@password", DbType.String, password);
DbDataReader dr = (DbDataReader)db.ExecuteReader(cmd);
【问题讨论】:
-
我认为使用参数时不可能。 :)
-
旁注:您应该不为您的存储过程使用
sp_前缀。微软有reserved that prefix for its own use (see Naming Stored Procedures),你确实会在未来某个时候冒着名称冲突的风险。 It's also bad for your stored procedure performance。最好只是简单地避免sp_并使用其他东西作为前缀 - 或者根本不使用前缀!
标签: c# asp.net sql sql-server stored-procedures