pyramid.csrf

class LegacySessionCSRFStoragePolicy[源代码]

将对CSRF存储的控制推迟到会话的CSRF存储策略。

此策略与知道如何通过 ISession.new_csrf_tokenISession.get_csrf_token .

注意,使用这个CSRF实现需要 session factory 已配置。

在 1.9 版本加入.

check_csrf_token(request, supplied_token)[源代码]

返回 True 如果 supplied_token 是有效的。

get_csrf_token(request)[源代码]

从会话返回当前活动的CSRF令牌,如果需要,生成一个新的。

new_csrf_token(request)[源代码]

在会话中设置一个新的CSRF令牌并返回它。

class SessionCSRFStoragePolicy(key='_csrft_')[源代码]

在会话中保持CSRF令牌的CSRF存储策略。

注意,使用这个CSRF实现需要 session factory 已配置。

key

存储CSRF令牌的会话密钥。违约: _csrft_ .

在 1.9 版本加入.

check_csrf_token(request, supplied_token)[源代码]

返回 True 如果 supplied_token 是有效的。

get_csrf_token(request)[源代码]

从会话返回当前活动的CSRF令牌,如果需要,生成一个新的。

new_csrf_token(request)[源代码]

在会话中设置一个新的CSRF令牌并返回它。

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 版本加入.

check_csrf_token(request, supplied_token)[源代码]

返回 True 如果 supplied_token 是有效的。

get_csrf_token(request)[源代码]

通过检查随当前请求发送的cookie,返回当前活动的CSRF令牌。

new_csrf_token(request)[源代码]

在请求中设置一个新的CSRF令牌并将其返回。

get_csrf_token(request)[源代码]

为通过的请求获取当前活动的CSRF令牌,使用 new_csrf_token(request) 如果一个不存在。这将调用所选CSRF保护实现中的等效方法。

在 1.9 版本加入.

new_csrf_token(request)[源代码]

为通过的请求生成新的CSRF令牌,并以实现定义的方式将其持久化。这将调用所选CSRF保护实现中的等效方法。

在 1.9 版本加入.

check_csrf_origin(request, *, trusted_origins=None, allow_no_origin=False, raises=True)[源代码]

检查 Origin 以查看它是否是跨站点请求。

如果 OriginReferer header不是可信的来源之一, raisesTrue ,此函数将引发 pyramid.exceptions.BadCSRFOrigin 例外,但如果 raisesFalse ,此函数将返回 False 相反。如果CSRF原点检查成功,此功能将返回 True 无条件地。

通过传递域列表(和端口,如果不是标准的,则类似 ['example.com', 'dev.example.com:8080']trusted_origins 参数。如果 trusted_originsNone (默认)此附加域列表将从 pyramid.csrf_trusted_origins 设置。

allow_no_origin 确定是否返回 True 当不能通过以下两种方式确定原点时 RefererOrigin 标题。默认值为 False 它将拒付支票。

请注意,如果 request.scheme 不是 https .

在 1.7 版本加入.

在 1.9 版本发生变更: 移居 pyramid.sessionpyramid.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) . 如果A token 没有为此函数提供关键字,字符串 csrf_token 将用于在中查找令牌 request.POST . 如果A header 没有为此函数提供关键字,字符串 X-CSRF-Token 将用于在中查找令牌 request.headers .

如果Post或By Header提供的值无法通过 pyramid.interfaces.ICSRFStoragePolicyraisesTrue ,此函数将引发 pyramid.exceptions.BadCSRFToken 例外。如果值不同,并且 raisesFalse ,此函数将返回 False . 如果CSRF检查成功,此功能将返回 True 无条件地。

自动检查CSRF令牌 有关如何自动保护应用程序免受CSRF攻击的信息。

在 1.4a2 版本加入.

在 1.7a1 版本发生变更: 在请求的查询字符串中传递的CSRF令牌不再被视为有效。它必须在请求主体或头中传递。

在 1.9 版本发生变更: 移居 pyramid.sessionpyramid.csrf 并更新以使用配置的 pyramid.interfaces.ICSRFStoragePolicy 验证CSRF令牌。