[英]Sql injection on stored procedure
我试图通过登录表单对我的存储过程进行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#代码就可以了。 任何奇怪的值都将被正确转义。
当您使用参数从代码将信息传递到存储过程时,无法执行SQL注入。
如果您从字符串部分连接查询而不使用参数,则可能发生SQL注入。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.