我正在尝试通过登录表单对存储过程进行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);
不,只要您从带有参数的C#代码中调用正确的参数化查询,就不可能进行SQL注入。如果您自己格式化EXEC sp_ADM_login...
SQL字符串,则容易受到攻击。
使用C#代码并使用适当的参数,您将完全安全。任何奇怪的值将被正确地转义。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句