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
或Referer
header不是可信的来源之一,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令牌。