一种绕过Plone安全性的机制,如果知道秘密令牌,则可以执行通常未经授权的操作(核心包)
项目描述
简介
为Plone开发者提供的一个产品。您将能够在站点的受保护内容上注册操作,这些内容受一个秘密令牌的保护。
使用内部实用程序或调用提供的视图(@@consume-powertoken),您可以运行您之前配置的操作。
如何使用
首先,你需要这个实用工具
>>> from collective.powertoken.core.interfaces import IPowerTokenUtility >>> utility = getUtility(IPowerTokenUtility)
有了这个,你可以在网站内容(例如,文档)上注册新的动作
>>> token = utility.enablePowerToken(document, 'myMagicAction')
令牌必须(可能)保密,你必须按你的偏好使用它(例如:开发一个通过电子邮件发送令牌的应用程序)
然后你可以使用相同的工具执行给定的动作
>>> result = utility.consumeActions(document, token)
或者调用需要令牌和路径参数的提供视图,例如
http://myplonesite/@@consume-powertoken?token=aaaa-bbbb-cccc&path=path/to/the/content
consumeActions也可以使用额外的运行时参数调用,这些参数可以在执行动作时使用
>>> result = utility.consumeActions(document, token, runtime_parameter1='foo', runtime_parameter2=5.4)
注册多个操作
你也可以为令牌注册(然后运行所有)多个动作。
>>> token = utility.enablePowerToken(document, 'myMagicAction') >>> utility.addAction(document, token, 'myMagicAction') >>> utility.addAction(document, token, 'aDifferentAction')
当你消费令牌时,所有注册的动作将按顺序执行。
>>> result = utility.consumeActions(document, token)
执行什么操作?
这只是一个核心包,因此你需要寻找其他添加可能的动作的包(或者开发你自己的包)。
当你调用时
>>> token = utility.enablePowerToken(document, 'myMagicAction', parameter1='foo', parameter2=5)
…你正在准备调用名为myMagicAction的适配器,同时也保存了提供的额外配置参数(在下面的特殊动作对象中,见下文)。请注意,第三方适配器可能需要特定的配置参数才能正常工作。
当调用consumeActions时,内部会搜索新的适配器
>>> from collective.powertoken.core.interfaces import IPowerActionProvider >>> adapter = getMultiAdapter((document, request), ... IPowerActionProvider, ... name='myMagicAction') >>> result = adapter.doAction(action, runtime_parameter1='foo', runtime_parameter2=5.4)
如何处理结果(你也可以不提供结果)由你控制。结果始终是一个包含所有执行动作结果的Python列表。
所有已知的动作提供者列表可在网上获得(请自由贡献并更新此页)。
特殊参数
当调用enablePowerToken并给出额外参数时,它们将存储在动作对象中
- 角色
默认为空列表。通常当你调用consumeActions时,你是在执行一个保持用户特权的动作。提供该列表中的Zope角色将给你这些角色。这样,知道令牌,你通常可以执行未经授权的动作。
- oneTime
默认为True。当你调用consumeActions时,你通常执行动作并将动作从动作列表中删除。相反,你可以配置一个在执行时永远不会使令牌过期的动作,这样你就可以多次调用它(每次使用相同的令牌)。
- params
默认为空字典,自动填充其他所有关键字参数,通常由适配器使用。
额外的先进参数
- unrestricted
默认:False。使用不受限制的用户,该用户始终通过安全检查。请注意,你通常不需要这个,只需很好地配置角色。
- username
默认:None。当使用不同的安全上下文,如使用角色参数时,而不是当前用户的id(或匿名时为空字符串)你可以选择一个新的。
最终安全提示
该产品与Zope安全交互,可能给用户带来巨大的权力,只需知道秘密令牌。
小心!
变更日志
0.3.0 (2012-02-15)
现在你可以消费动作时添加运行时参数[keul]
更新文档并修复错误[keul]
0.2.0 (2012-01-15)
添加新选项:unrestricted(你通常不需要这个,真的)[keul]
添加新选项:username[keul]
0.1.0 (2012-01-11)
初始发布
collective.powertoken.core-0.3.0.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 072eec6040f8b885b55e929e7842f65cb61528dc43c47ed6128e349c254addc8 |
|
MD5 | 7defb93c71e1b52ac0d26816f9686328 |
|
BLAKE2b-256 | 95aa38c91b448cfd7ce020388317763a83f8fa9a3bf6528138cb3e5a7f316a45 |