跳转到主要内容

一个HTTP referer凭据插件。

项目描述

一个使用HTTP referer头来提供凭据的包。

详细文档

HTTP-Referer凭据

有时需要根据用户来源的网站来限制对网站的访问。例如,用户只能在来自公司网络时进入网站。如果两个网站无法共享任何特定信息,如身份验证令牌,那么唯一有用的信息就是HTTP-Referer请求头。

__注意__:我知道这并不完全安全,有人可能会伪造头。但在这种特定应用中是可以接受的。我想这可以阻止那些诚实的人。是的,这是一个真实世界的场景——否则我会实现这个包吗?:-)

让我们先看看凭据插件

>>> from z3c.referercredentials import credentials
>>> creds = credentials.HTTPRefererCredentials()

让我们先看看正面情况。referer凭据插件有一个属性指定所有允许的主机

>>> creds.allowedHosts
('localhost',)

在这个例子中,我们只想允许来自www.zope.org的用户访问网站。

>>> creds.allowedHosts = ('www.zope.org',)

现在,来自该网站的用户将有一个包含此referer的请求

>>> from zope.publisher.browser import TestRequest
>>> request = TestRequest(HTTP_REFERER='http://www.zope.org/index.html')

凭据现在可以按以下方式提取

>>> creds.extractCredentials(request)

没有返回任何内容。这是因为我们没有定义任何代表“referer用户”的凭据。通过设置凭据,它应该可以工作

>>> creds.credentials = {'login': 'mgr', 'password': 'mgrpw'}
>>> creds.extractCredentials(request)
{'login': 'mgr', 'password': 'mgrpw'}

一旦传递了可接受的引用者,凭据总是被返回

>>> del request._environ['HTTP_REFERER']
>>> creds.extractCredentials(request)
{'login': 'mgr', 'password': 'mgrpw'}

我们必须登出才能丢失凭据

>>> creds.logout(request)
True

现在,在不发送正确的引用者时,不会返回凭据

>>> creds.extractCredentials(request)

当用户无法验证时,插件会被要求提出挑战

>>> creds.challenge(request)
True
>>> request.response.getHeader('Redirect')

默认情况下,我们在网站上获取“unauthorized.html”视图。但您可以更改视图名称

>>> creds.challengeView = 'challenge.html'
>>> creds.challenge(request)
True
>>> request.response.getHeader('Redirect')

最后说明:当然,此凭据插件仅适用于基于HTTP的请求

>>> request = object()
>>> creds.extractCredentials(request)
>>> creds.challenge(request)
False
>>> creds.logout(request)
False

变更

版本 0.1.0(2007年6月??日)

  • 初始发布

    • 实现HTTP-Referer凭据插件

项目详情


下载文件

下载您平台上的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分发

z3c.referercredentials-0.1.0.tar.gz (7.6 KB 查看散列

上传时间:

构建分发

z3c.referercredentials-0.1.0-py2.4.egg (11.6 KB 查看散列

上传时间:

支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面