Create FUNCTION f_checkString(@temp varchar(4000))
--f_checkString为方法名
--@temp为参数名 varchar为参数类型 4000为类型长度
--过滤SQL字符串
RETURNS varchar(4000)
--返回类型为varchar长度为4000
AS
BEGIN
set @temp=replace(@temp,'''','')
set @temp=replace(@temp,'"','')
set @temp=replace(@temp,':','')
set @temp=replace(@temp,'-','')
return @temp
END
--------------------------------------------------------------------------------------------
--在MSSQL中存储过程中调用方法如下:
--判断用户名和密码是否正确
--exec sp_CheckUser
--2006-8-2
--dzend.com
Create PROCEDURE sp_CheckUser
@username varchar(20), --用户名
@password varchar(20) --密码
as
declare
@str varchar(20),
@result int,
@status int
--过滤非法字符串
select @username=dbo.f_checkString(@username)
select @password=dbo.f_checkString(@password)
select @str=[password],@status=status from usersInfo where username=@username
if @@rowcount=0
set @result=-1 --用户名错误
else
begin
if @status=1
set @result=-3 --帐号被锁定
else
begin
if @str=@result
set @result=0 --登陆成功
else
set @result=-2 --密码错误
end
end
select @result
GO
exec sp_CheckUser zhangsan,123456

本文介绍了一个SQL Server存储过程实现的安全登录验证方法。该方法通过定义一个函数f_checkString来过滤输入字符串中的特殊字符,防止SQL注入攻击。接着,创建了一个存储过程sp_CheckUser用于检查用户名和密码是否匹配,并考虑了账号锁定的情况。
973

被折叠的 条评论
为什么被折叠?



