请教各位大侠一ASP安全控制问题

warmsnow 2002-03-05 12:32:10
最菜的用户登录SQL语句
sql="select * from users where userid='"&user&"'" and psw='"&pws&"'"
但这样的程序的漏洞太多,我将SQL语句改成如下,想用参数来写,但无法通过,Object换成了Recordset、Command也不知道如何才可支持Declare的写法!先谢过各位!
sql="declare @user char(12) "
sql=sql&"select @user='"&user&"' "
sql=sql&"select userid,username from user "
sql=sql&" where Rtrim(Ltrim(KH_LOGINID))=@user"
...全文
38 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
apoint 2002-03-08
  • 打赏
  • 举报
回复
同意 julyclyde说法
select时条件只指定username。出来Recordset以后再比较password
这种做法可以避免永真表态式的侵入,还可以具体检查是用户名不存在,还是密码错误
代码如下:

Dim Query, netsol
Set netsol = Server.Createobject("ADODB.Recordset")
muser=trim(request.form("muser"))
Query = "SELECT buser FROM user WHERE buser='"&muser&"'"
netsol.open Query, Conn, adOpenStatic, adLockOptimistic
On Error Resume Next
muser=request("muser")
if muser<>netsol("buser") then
'无此用户名了出错处理
else
if request("mkey")=netsol("bkey") then
'用户名与密码符合,合法用户处理
else
'用户名存在,但密码错误
end if
end if%>
y_shen 2002-03-08
  • 打赏
  • 举报
回复
把asp语句封装在com中!
flyfox 2002-03-08
  • 打赏
  • 举报
回复
同意julyclyde(foreverkok.yeah.net) ,不要告诉别人是用户名错误还是密码错误。要不然容易受到攻击啊
julyclyde 2002-03-08
  • 打赏
  • 举报
回复
不要告诉别人是用户名错误还是密码错误。要不然容易受到攻击啊
julyclyde 2002-03-05
  • 打赏
  • 举报
回复
好像是一样吧?

正确的方法:select时条件只指定username。出来Recordset以后再比较password
antshome 2002-03-05
  • 打赏
  • 举报
回复
写在存储过程里

28,406

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧