gpt4 book ai didi

python - Pyramid.security 问题 : Double cookies? 不安全的 cookie?过期?

转载 作者:太空狗 更新时间:2023-10-29 20:52:29 25 4
gpt4 key购买 nike

我正在首次涉足 Pyramid 安全模块。我正在使用此登录代码来设置 auth_tkt:

@view_config(route_name='LoginForm', request_method='POST', renderer='string')
class LoginForm(SimpleObject):
def __call__(self):

emailAddress = self.request.params.get('emailAddress')
password = self.request.params.get('password')

if emailAddress != 'testemail@gmail.com' or password != 'testpassword':
errorDictionary = { 'message' : "Either the email address or password is wrong." }
self.request.response.status = 400
return json.dumps( errorDictionary, default=json_util.default)

testUserGUID = '123123123'

headers = remember(self.request, testUserGUID)
return HTTPOk(headers=headers)

似乎工作正常,但有一些令人费解的细节:

首先,实际上设置了 2 个 cookie,而不是一个。这 2 个 cookie 是相同的(都具有名称“auth_tkt”),除了一个区别:一个的主机值为“.www.mydomain.com”,而另一个 cookie 的主机值为“www.mydomain.com” 为什么设置了 2 个 cookie 而不是 1 个?不同主机值的意义是什么?

问题 2,网络工具报告说这两个 cookie 都不安全。我可以做些什么来确保 cookie/s 是安全的?

问题 3:两个 cookie 的过期值为“ session 结束时”。这是什么意思,我如何自定义到期值?登录 cookie 过期时间的推荐做法是什么?

问题4:我不明白为什么“remember”的第一个参数是self.request而不是self.request.response。数据不应该记在响应对象上,而不是请求对象上吗?

最佳答案

  1. 实际上,生成了 3 个 cookie;一个没有 Domain 键,一个有,第三个是你的域的通配符版本(前导点)。您的浏览器通常要么合并两者,要么忽略其中之一(哪一个因浏览器而异,这就是设置 2 的原因)。

    最后一个 cookie 是在 AuthTktAuthenticationPolicy 上设置了 wild_domain 选项时生成的(默认为 True);查看AuthTktAuthenticationPolicy API .如果您的身份验证 cookie 要在不同的子域之间共享,则需要这个(想想 app1.domain、app2.domain);如果没有通配符 cookie,您的浏览器将不会跨子域共享 cookie。

  2. 您需要在 cookie 的身份验证策略中设置 secure 选项才能设置安全标志。再次查看 API .

  3. 未设置过期时间,这意味着当您关闭浏览器时 cookie 将被删除(您的浏览器显示 session 结束)。如果您希望用户在关闭浏览器时注销,请将其保留为默认设置。

    如果您希望 session 在浏览器关闭时持续,请设置 cookie 最长期限,请参阅 API 中的 max_age 选项.此选项将导致浏览器将 cookie 存储在磁盘上以在浏览器关闭之间持续存在,并在超过最大期限后将其删除。

    请注意,AuthTktAuthenticationPolicy 策略对象可以通过限制将任何身份验证 cookie 视为有效的时间,以更细粒度的方式管理登录 session ,并允许您设置 cookie 刷新政策。有了这样的刷新策略,用户将在继续使用您的应用程序时收到新的(刷新的)cookie,但是如果他们没有在设定的时间段内连接到您的服务器,他们的 cookie 将被视为无效并且他们会重新登录。

    请参阅 API documentation 中的 timeoutreissue_time 选项有关如何配置它的更多详细信息。

  4. 策略对象需要请求中的几条信息才能生成 cookie,尤其是服务器的所有主机名。

关于python - Pyramid.security 问题 : Double cookies? 不安全的 cookie?过期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12232364/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com