【问题标题】:pramid.security.remember secure?pyramid.security.还记得安全吗?
【发布时间】:2013-02-14 01:54:05
【问题描述】:

我想知道这是否安全,我不知道remeber 是如何工作的。如果我通过忘记注销,我仍然可以在浏览器中查看 auth_tkt cookie,所以我认为它不可能像加密 user_id 并将它们存储在 cookie 中那样简单,是吗?

编辑:
我的登录代码:

headers = remember(request,user.userId)
return HTTPFound(location="/",headers=headers)

注销代码:

headers = forget(request)
return HTTPFound(location="/login",headers=headers)

【问题讨论】:

    标签: python security authentication cookies pyramid


    【解决方案1】:

    pyramid.security.remember 使用 HMAC 对 cookie 进行签名,使其接近于防篡改。 http://en.wikipedia.org/wiki/Hmac

    关于忘记的问题,您是否将不带 cookie 的新请求传递给标头?

    headers = forget(request)
    return HTTPFound(location = request.route_url('home'),
                     headers = headers)
    

    http://docs.pylonsproject.org/projects/pyramid/en/1.3-branch/tutorials/wiki2/authorization.html#adding-login-and-logout-views

    如果您向我们展示您尝试过的内容也会有所帮助,可能包括您的注销视图代码

    【讨论】:

    • 谢谢!如果我注销,我实际上无法使用该应用程序,也许 Chrome 以某种方式缓存了“查看 cookie”页面。
    • @FelixScheinost 如果我没记错的话,chrome 会像网页一样使用 html 呈现所有设置页面,因此需要刷新以查看 cookie 是否更改:)
    • 哦,我忘了。我很惊讶 Chrome 不会使用像背景刷新这样的好东西。我也用另一种方式测试过,同时登录两个不同的浏览器也会产生不同的auth_tkt的
    • @FelixScheinost 那是因为 HMAC 需要花费时间修改 cookie 到它的计算中,这使得它更难被篡改。您还可以将其设置为记住 IP,以便在 IP 更改时使其无效。 authn_policy = AuthTktAuthenticationPolicy('mysecret', include_ip=True)docs.pylonsproject.org/projects/pyramid/en/1.3-branch/api/…
    • AuthTkt 策略确实实际使用 HMAC。它使用md5(md5(timestamp+secret+userid+'\0'+tokens+'\0'+userdata) + secret)。无论如何,其余的都是真的。它是防篡改但未加密的,这意味着用户可以看到数据。
    猜你喜欢
    • 1970-01-01
    • 2012-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多