网站运营
位置:首页>> 网站运营>> asp安全 Cookies 欺骗漏洞的防范(2)

asp安全 Cookies 欺骗漏洞的防范(2)

作者:愿望 来源:编程中国 发布时间:2007-11-02 12:23:00 

标签:Cookies,漏洞

三、长时间储存用户信息

采用 Session 来保存用户登录信息,虽然摆脱了 Cookies 欺骗的问题,但是 Session 不能长期储存(IIS 默认 Session 在用户停止响应 20 分钟后失效),于是产生了这一节所述的 Cookies + session 混合存储法。

这一方法有两个变种,第一种是在 Cookies 中储存用户名和密码,当用户访问一个页面时,先读取 Session,如果有内容则以 Session 为准,否则读取 Cookies,按照 Cookies 中提供的用户名和密码进行“不透明”的登录一次,用以判断 Cookies 中的内容是否合法,若合法再进而存入 session 中。实现这一方法的代码如下:

VBs:

<%
Dim username, password
username = session("username")
if username = "" then
' session 中没有用户登录信息
  username = Request.Cookies("username")
  password = Request.Cookies("password")
  ' 注意上面的两句得到的 username 和 password 要进行 SQL 注入漏洞的防范(即过滤掉单引号“'”),这里略去
  if username = "" or password = "" then
  ' 用户没有登录
    ...
  else
    ' 这里假设已经创建了 conn 和 rs 对象
    rs.Open "SELECT TOP 1 * FROM [user] WHERE username='" & username & "' AND password='" & password & "'", conn, 1, 3
    if rs.eof then
    ' Cookies 中的信息非法
      ...
    else
    ' Cookies 中的信息合法,自动登录
      session("username") = username
      ...
    end if
  end if
else
' 用户信息已经存在于 session 中,直接读取
  ...
end if
%>

js:

<%
var username, password;
username = session("username") + "";
if (username == "" || username == "undefined") {
// session 中没有用户信息
  username = Request.Cookies("username") + "";
  password = Request.Cookies("password") + "";
  // 注意上面的两句得到的 username 和 password 要进行 SQL 注入漏洞的防范(即过滤掉单引号“'”),这里略去
  if (username == "" || username == "undefined" || password == "" || password == "undefined") {
  // 用户没有登录
    ...
  }
  else {
    // 这里假设已经创建了 conn 和 rs 对象
    rs.Open("SELECT TOP 1 * FROM [user] WHERE username='" + username + "' AND password='" + password + "'", conn, 1, 3);
    if (rs.eof) {
    // Cookies 中的信息非法
      ...
    }
    else {
    // Cookies 中的信息合法,自动登录
      session("username") = username + "";
      ...
    }
  }
}
else {
// 用户信息已经存在于 session 中,直接读取
  ...
}
%>

但是这种方法对于用户来说又不太安全,原因是浏览器每次访问页面时都会把 Cookies 传输过去,而包含密码的 Cookies 一旦被他人获取将导致用户帐号被盗。对于这种情况,又出现了第二种方法,即在用户信息数据库中增加一个字段“verifycode”,在用户登录时,随机产生一个长整型校验值存入 verifycode 字段,并且将 username 和这个 verifycode 值而不是 password 存入 Cookies。而在验证 Cookies 中的用户信息时,也只验证 username 和 verifycode。这种方法的好处在于,即使用户的 Cookies 被黑客获取,他也只能利用这个“临时”产生的 verifycode 登录,而无法获得用户的密码。只要此用户再一次使用用户名和密码登录,这个 verifycode 值便会改变,黑客便无法通过原来的 verifycode 登入。

这种方法的实现只需要在上述方法一的代码上稍加改动。首先,在您的登录程序中,在验证通过存储用户信息的地方需要加上一段:

VBs:

<%
Response.Cookies("verifycode") = int(rnd * 2100000000)
%>

js:

<%
Response.Cookies("verifycode") = Math.floor(Math.random() * 2100000000);
%>

然后,在上面提供的验证代码中把对 Cookies("password") 的验证改为对 Cookies("verifycode") 的验证即可。

四、结论

通过我们的分析以及处理,Cookies 欺骗漏洞已经被完全解决,从此,我们的 ASP 程序变得更加安全了。

0
投稿

猜你喜欢

  • 内容优是是任何一项SEO活动的关键所在。毕竟,你会不断地增加并升级网站内容和博客,因此,也就是有新的机会调整内容,并改善搜索引擎的整体可视性
  • 防采集第一种方法:在文章的头尾加上随机广告网站采集者在采集时,通常都是指定头尾特征从哪到哪过滤.我们这里讲的第一种方法:文章头尾加随机广告,
  • 使用的vmware12虚拟机安装的centos6.8和物理机上的windows10,实现在windows10 上访问CentOs上的samb
  • 前一段时间提交了一个产品版本给测试人员测试,测试结果简直出人意料!测试一段时间后页面就卡死了,当时根据这个现象下意识的怀疑是卡到数据库这一层
  • 这些日子搞了搞 WordPress,确实是一款很好的 blog 系统。安装配置简单,编辑界面优秀,有插件系统。使用方便,速度也还可以,挺适合
  • 当前SEO(搜索引擎优化 &ndash; Search Engine Optimization)的理念逐渐被国内网站所接受,SEO行
  • Text Link Ads 是一家专门销售博客文字链接的国外联盟,网赚老鸟应该对它并不陌生,很多人靠它很轻松的赚了不少钱,对于网赚新手来说,
  • 在看到苹果公司宣布将以29美元的价格对其MacOS进行升级时笔者想起了这则广告。这听起来就比微软复杂的定价方案要好得多。而事实上29美元的升
  • 有人说,web2.0的泡沫正在破灭。Techcrunch今天也发表了一篇关于互联网广告正在萎缩的议论。这让我对中文博客的Adsense点击状
  • 很多人做网站,有人成功,但是更多人失败,这是为什么?我觉得做网站,从事网赚行业—贵在坚持!现在搭建网站很容易,网络上一大把CMS建站系统任你
  • Virtual Box的host-only网络使用Host-only可以在VirtualBox中可以建立一个内部的局域网,而且还可以使得主机
  • 北京时间10月9日消息,据国外媒体报道,YouTube CEO查德&middot;赫尔利(Chad Hurley)今天表示,该网站每
  • 核心提示: 一个网站要建立好良好的形象,必定要“扬长避短”。通过robots.txt来限制蜘蛛的爬行页面,不让蜘蛛爬行质量比较低劣的网页。G
  • 1. 镜像和容器看待镜像和容器的一种方式是将它们类比成程序与进程。一个进程可以视为一个被执行的应用程序,同样,一个Docker容器可以视为一
  • 最泛滥的互联网牛皮癣小广告:茶叶最最热销的广告位置:汽车最依赖互联网广告的行业:网页游戏最早也是最持久的互联网广告:让男人更持久,让女人更妩
  • Lunarpages是一家成立于2000年的美国虚拟主机商,在短短的9年时间内,服务的全球客户总数已超过20万。这其中最大的原因就是Luna
  • 相信每个人都对 回收站(trashcan)很熟悉,因为无论是对 Linux 用户,还是 Windows 用户,或者 Mac 用户来说,它都很
  • 前段时间暴风影音的DNS攻击事件导致大量用户无法上网,闹得沸沸扬扬,至今网上仍然有人讨论。DNS到底是什么呢?为什么DNS挂了就不能上网?有
  • 许多web浏览器都比IE更易于使用,并且不会那么容易就受到黑客和其它威胁的攻击。  大家似乎很难想起来还有许多可以替代IE的web
  • 据新加坡《联合早报》10月15日报道,发明全球互联网的英国人伯纳斯承认,当初在网址前面加上双斜线实在有欠考虑。据报道,伯纳斯大约30年前想出
手机版 网站运营 asp之家 www.aspxhome.com