设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客
LUPA开源社区 首页 IT综合资讯 查看内容

如何构建安全的“记住我”的特性

2013-7-25 11:11| 发布者: joejoe0332| 查看: 1274| 评论: 0|原作者: 开源中国社区|来自: 开源中国社区

摘要:   看下这个场景 – 一个用户登录了你的网站,第二天再次回来访问时...他必须再次登录。“记住我”这种功能 – 让我们关注下,我们之前都见过它 – 是指在立即使用之后把已认证状态进行持久化。这意味着他们可以关 ...
  看下这个场景 – 一个用户登录了你的网站,第二天再次回来访问时...他必须再次登录。“记住我”这种功能 – 让我们关注下,我们之前都见过它 – 是指在立即使用之后把已认证状态进行持久化。这意味着他们可以关闭浏览器,关掉电脑,然后过一天或者过一周或者过一个月或者无论多久之后再回来访问时,该网站依然能识别出来他们是谁,并给他们提供和他们离开时所拥有的一模一样的功能。

我所说的就是下面这个小东西:


"Keep me logged in" from Facebook


  看起来很简单, 是吧? 也许是,但是你将会看到把它弄得一团糟的情况并不少见,而且,即使你做对了,也会有一大队人等着告诉你,实际上你仍然不够正确。让我们从一些完全错误的做法开始我们的工作。


  适得其反的模式


  这看起来挺明显的吗,不是吗?我是说关于“记住我”这个特性的模型还是挺基础的,不是那种很容易搞错的东西。你确定吗?显然不是。


  在我们讨论怎么做才能做对之前,我们先来分享几个适得其反的模式的案例。第一个案例就是Black & Decker,就是我前段时间在Security is hard, insecurity is easy里写到的那个B&D。这就是你准备登录时的样子:


Logging in to Black & Decker


  这还是挺中规中矩的,有意思的东西要等你登录后才能看到。然我们来看下Cookie记录:


Black & Decker cookies


  这是cookies的一些相关属性和值。但是高亮部分是真正值得关注的地方。假如用户没有选择"记住我 "按钮,这些cookies的信息不会存在,所以它们的功能纯粹是为了用户稍后登录。我的用户名是相当的清楚,我的密码被加过密码。注意看看这个密码,那是Base64编码!这就意味着密码被实现由Base64编码,你能拦截它在某些地方例 如 base64decode.org 这样做:


Base 64 decoding the Black & Decker cookie


  现在并非所有人知道Base64这一门加密技术 (是的,用户可以真正地这样做) 。它是相当完美合法代替数据用ASCII格式, 这个真正的故事在这里是告诉我们的密码在浏览器以文本方式。你可能会惊奇-为什么有问题呢。它是在你的浏览器,真的?黑客怎么攻击它呢?


  我将要去讨论两种简单的方式。第一种方式是涉及到前面链接的不安全的信息。Black & Decker 已经暴露了ElEMH日志和这些日志相关的未处理服务器异常。我会通知它们在 50,000的北方。当ELMAH日志发生异常,那么意味着cookies(所有请求头信息)将会被记录。系统将会抛出大量的错误信息,你会接受到一个用户凭证。是的,他们应该开始恰当地保护ELMAH日志信息。但它是一个很好的例子,你怎么可以很容易地通过一个非常简单的配置撤消错误信息。


酷毙

雷人

鲜花

鸡蛋

漂亮
  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号