阻止Session欺骗以提高网站安全性
Session欺骗一直是入侵者们搞破坏的手段之一,尤其是遇上大意的程序员时,网站安全就存在很大的风险了。eWebEditor编辑器就曾经出现过session欺骗漏洞。下面就拿eWebEditor编辑器曾经的这个漏洞来说吧。
vb 代码
- If Session("eWebEditor_User") = "" Then
- Response.Redirect "admin_login.asp"
- Response.End
- End If
这个session只是判断是否为空,而并没有判断session里的具体值。其实,即使这样,入侵者如果没有当前域名下的webshell,哪怕取得了同一服务器下其他站点的webshell,同样是无法构造Session欺骗 的。因为 session 是需要验证主机头的,在本地构造 或 在同服务器下其他域名下构造session 都不会成功。
但为了安全,作为程序员或站长,我们可以通过以下几点来加强我们网站程序的安全性,防止session欺骗!
判定session的具体值!在赋值session的时候,这个值越个性越好,并且如果你的程序曾经在互联网上公开发布过的话,你一定要自己重新写这个session值,防止有些不轨之徒下载你写的程序来分析你的session漏洞。如下
vb 代码
- If Session("eWebEditor_User") <> "jdskfJIEO_joiwelCN324FE" Then
- Response.Redirect "admin_login.asp"
- Response.End
- End If
注意,jdskfJIEO_joiwelCN324FE 这个值要保证没有第二人知道,当然,如此复杂,如何记得住啊哈哈
另外,在判断登陆是否成功的时候,不要只写下面的代码:
sql 代码
- "select * from admins where user='"&request("user")"' and password='"&request("password")&'""
正确写法:
vb 代码
- sql="select * from admin where user='"&过滤后的用户名"'"
- rs.open sql,conn,1,1
- If rs.eof and rs.bof Then
- response.write "<SCRIPT language=JavaScript>alert('非法登录!');"
- response.write "this.location.href='vbscript:history.back()';</SCRIPT>"
- response.end
- else
- If rs("password")<>MD5(password) Then
- response.write "<SCRIPT language=JavaScript>alert('非法登录!');"
- response.write "this.location.href='vbscript:history.back()';</SCRIPT>"
- response.end
- else
- session("admin_USER_FMIS")="jdskfJIEO_joiwelCN324FE"
- End If
- End If
总之,看完上面的分析之后,其实,Session欺骗并不是多么恐怖。只要我们在写程序的时候稍微留意一下,写出来的代码的安全性就会增加不少!