信诺达泰思特:'or'='or' 可以登录后台吗?

来源:百度文库 编辑:杭州交通信息网 时间:2024/05/05 19:30:15
后台管理的用户名和密码直接输入'or'='or' 可以登录?

这是以前的一个漏洞吗?(SQL漏洞吗?)

可以登录哪类型后台?

浏览网站或BBS的时候,经常会有管理员登录页面存在,这是为了方便管理而设置的。可是在管理登录页面中存在一个很严重的漏洞——如果账号和密码中都输入'OR''=',即可直接进入管理页面。

笔者做了一个测试,用Google搜索“管理员登录”,在搜索结果中随机选取了20个网页(包括一些著名品牌的电脑网站、大型商场网站、学校网站、个人网站、BBS等),利用'OR''='漏洞测试后发现,其中有12个网页能成功获得管理员权限。网站管理员的重要性想必大家也知道,他们往往能够主宰网站的命运。是个人网站、BBS等小网站还好,管理员权限至多是添加或删除几个文件或帖子;可如果是著名品牌电脑网站或大型商场网站的管理员,他们则可以更改机型、配置、价格、进货、出货等重要数据。是不是很恐怖?

现在我们就来分析一下神秘的'OR''='漏洞:

user=request.form("user")

pass=request.form("pass")

.......

sql="select * from guestbook where user='"&user&"' and pass='"&pass&"'" (*)

如果把'OR''='引入(*)中,则user和pass中就会得到这样的代码:

sql="select * from guestbook where user="or"=" and pass="or"=""

因为"="的值是真,那么user='"&user&"' and pass='"&pass&"'的值也绝对是真,所以登录能够成功。

防范指南
解决这个问题的方法也很简单,将(*)改成如下的语句即可:

sql="select * from guestbook where user='"&user&"'"

.......

if pass=rs("pass")

then 就打开管理网页

else

就打开身份验证网页

end if

这样就可以解决'OR''='漏洞的问题。

如果你熟悉Javascript,也可以用Javascript来限制用户名和密码中出现的特殊字符,一旦出现“'”就提示出错,这也是个不错的方法。

最后笔者还想提醒一下各位站长,'OR''='问题绝对不容忽视!