首先申明,不是为了恶意破坏别人的站点。只是为了自己的站点安全性更高有这么一个存储过程用来检测用户登录的--用户登录验证CREATE Procedure UsersLogin
(
@UserID VARCHAR(50),
@Password NVARCHAR(50),
@LoginID INT OUTPUT --用于接受所选记录数,判断是否有该用户
)
ASSELECT @LoginID=COUNT(*) FROM Users WHERE UserID = @UserID AND [Password] = @PasswordIF @@Rowcount < 1
SELECT
@LoginID = 0
GOUserID字段不是主键,要怎么样传值给这个存储过程才能把UserID的值更新为这是一个测试
(
@UserID VARCHAR(50),
@Password NVARCHAR(50),
@LoginID INT OUTPUT --用于接受所选记录数,判断是否有该用户
)
ASSELECT @LoginID=COUNT(*) FROM Users WHERE UserID = @UserID AND [Password] = @PasswordIF @@Rowcount < 1
SELECT
@LoginID = 0
GOUserID字段不是主键,要怎么样传值给这个存储过程才能把UserID的值更新为这是一个测试
调用这个存储过程的时候,传什么值进去
可以把UserID的值更新为'这是一个测试'
调用这个存储过程的时候,传什么值进去
可以把UserID的值更新为'这是一个测试'
就是 UPDATE Users SET UserID='这是一个测试'
就是在用户登录的时候让存储过程去执行上面那条语句呀我的目的也是为了避免注入,但我必须知道通过什么样的方式来避免
现在这个数据库就是出了这个问题了,UserID的值经常被人恶意的更新,而站点程序不是我写的,那个开发的人源程序又不肯给,只说是帮我们修改。所以,我必须找出问题所在,然后把问题反馈给他,他再去有针对性的更改他自己的程序呀
SELECT @LoginID=COUNT(*) FROM Users WHERE UserID = 'value' AND [Password] = 'value' Update Users SET UserID='这是一个测试'
的话,那么就可以更新UserID的值了所以,有没有什么办法在登录界面输入密码的那里,让传进去参数以后密码验证部份变为
[Password] = 'value' Update Users SET UserID='这是一个测试'
请各位大侠看看
SQL注入主要针对的是拼装SQL语句,asp.net&C#调用存储过程我想肯定用SqlParameter或OleDbParameter传递参数,而SqlParameter或OleDbParameter会检查输入的类型和长度,确保输入值在数据库中当作文本值而不是可执行代码进行处理。