pyramid.csrf¶
- class LegacySessionCSRFStoragePolicy[源代码]¶
将对CSRF存储的控制推迟到会话的CSRF存储策略。
此策略与知道如何通过
ISession.new_csrf_token和ISession.get_csrf_token.注意,使用这个CSRF实现需要 session factory 已配置。
在 1.9 版本加入.
- class SessionCSRFStoragePolicy(key='_csrft_')[源代码]¶
在会话中保持CSRF令牌的CSRF存储策略。
注意,使用这个CSRF实现需要 session factory 已配置。
key存储CSRF令牌的会话密钥。违约: _csrft_ .
在 1.9 版本加入.
- class CookieCSRFStoragePolicy(cookie_name='csrf_token', secure=False, httponly=False, domain=None, max_age=None, path='/', samesite='Lax')[源代码]¶
另一种CSRF实现,它将其信息存储在未经身份验证的Cookie中,该Cookie方法称为“Double Submit Cookie”方法,在 OWASP CSRF guidelines 。这在伸缩方面提供了一些额外的灵活性,因为令牌可以由前端服务器生成和验证。
在 1.9 版本加入.
- get_csrf_token(request)[源代码]¶
为通过的请求获取当前活动的CSRF令牌,使用
new_csrf_token(request)如果一个不存在。这将调用所选CSRF保护实现中的等效方法。在 1.9 版本加入.
- check_csrf_origin(request, *, trusted_origins=None, allow_no_origin=False, raises=True)[源代码]¶
检查
Origin以查看它是否是跨站点请求。如果
Origin或Refererheader不是可信的来源之一,raises是True,此函数将引发pyramid.exceptions.BadCSRFOrigin例外,但如果raises是False,此函数将返回False相反。如果CSRF原点检查成功,此功能将返回True无条件地。通过传递域列表(和端口,如果不是标准的,则类似
['example.com', 'dev.example.com:8080'])trusted_origins参数。如果trusted_origins是None(默认)此附加域列表将从pyramid.csrf_trusted_origins设置。allow_no_origin确定是否返回True当不能通过以下两种方式确定原点时Referer或Origin标题。默认值为False它将拒付支票。请注意,如果
request.scheme不是https.在 1.7 版本加入.
在 1.9 版本发生变更: 移居
pyramid.session到pyramid.csrf在 2.0 版本发生变更: 添加了
allow_no_origin选项。
- check_csrf_token(request, token='csrf_token', header='X-CSRF-Token', raises=True)[源代码]¶
检查CSRF令牌
pyramid.interfaces.ICSRFStoragePolicy根据价值实现request.POST.get(token)(如果是邮寄请求)或request.headers.get(header). 如果Atoken没有为此函数提供关键字,字符串csrf_token将用于在中查找令牌request.POST. 如果Aheader没有为此函数提供关键字,字符串X-CSRF-Token将用于在中查找令牌request.headers.如果Post或By Header提供的值无法通过
pyramid.interfaces.ICSRFStoragePolicy和raises是True,此函数将引发pyramid.exceptions.BadCSRFToken例外。如果值不同,并且raises是False,此函数将返回False. 如果CSRF检查成功,此功能将返回True无条件地。见 自动检查CSRF令牌 有关如何自动保护应用程序免受CSRF攻击的信息。
在 1.4a2 版本加入.
在 1.7a1 版本发生变更: 在请求的查询字符串中传递的CSRF令牌不再被视为有效。它必须在请求主体或头中传递。
在 1.9 版本发生变更: 移居
pyramid.session到pyramid.csrf并更新以使用配置的pyramid.interfaces.ICSRFStoragePolicy验证CSRF令牌。