一种绕过plone安全机制,在知道秘密令牌的情况下执行通常未经授权的操作(核心包)

collective.powertoken.core的Python项目详细描述


Introduction

为plone开发人员提供的产品。您将能够在站点内容上注册受保护的操作 通过秘密令牌

使用内部实用程序或调用提供的视图(@@consume-powertoken),可以运行 以前配置过。

How to use

首先,您需要实用程序:

>>> from collective.powertoken.core.interfaces import IPowerTokenUtility
>>> utility = getUtility(IPowerTokenUtility)

使用此功能,您可以在网站内容(例如,文档)上注册新操作:

>>> token = utility.enablePowerToken(document, 'myMagicAction')

token必须(可能)保密,并且您必须根据自己的喜好使用它(例如:开发 通过电子邮件发送令牌的应用程序)

然后,您可以使用相同的实用程序执行给定的操作:

>>> result = utility.consumeActions(document, token)

或者调用所提供的需要tokenpath参数的视图,例如:

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)

Registering more that one action

您还可以为令牌注册(然后运行所有主题)多个该操作。

>>> token = utility.enablePowerToken(document, 'myMagicAction')
>>> utility.addAction(document, token, 'myMagicAction')
>>> utility.addAction(document, token, 'aDifferentAction')

当您使用令牌时,所有注册的操作都将按顺序执行。

>>> result = utility.consumeActions(document, token)

What action is executed?

这只是核心包,所以您需要寻找添加可能操作(或开发)的其他包 你自己的)。

当您拨打电话时:

>>> token = utility.enablePowerToken(document, 'myMagicAction', parameter1='foo', parameter2=5)

…您正在为名为mymagicaction的适配器准备调用,同时还节省了额外的 提供配置参数(在特殊的action对象中,请参见下文)。 要知道,第三方适配器可能需要特定的配置参数才能正常工作。

调用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列表,包含所有已执行操作的所有结果。

一个list of all know action providers可以在线获得(随时贡献和更新此页面 你自己的)。

Special parameters

当调用enablePowerToken并提供其他参数时,它们存储在action 对象:

roles
默认为空列表。通常,当您调用consumeActions时,执行的操作将保留用户的 特权。提供一个zope角色列表将为您提供那些角色。就这样, 知道令牌后,通常可以执行未经授权的操作。
oneTime
默认为true。当您调用consumeActions时,通常会执行该操作并删除该操作 从行动列表中。 相反,您可以配置一个在执行时不会使令牌过期的操作,这样您可以调用它许多 您需要的时间(每次使用相同的令牌)。
params
默认值是空的dict,自动填充传递的每个其他关键字参数, 适配器常用。

附加高级,参数:

unrestricted
defaut:错误。使用不受限制的用户,该用户始终通过安全检查。请注意 您通常不需要这个,只要配置好roles
username
defaut:无。当使用不同的安全上下文时,比如当使用roles参数时 您可以选择一个新的用户名。

Final security note

该产品使用zope安全性,只需知道秘密令牌,就有可能为用户提供强大的功能。

小心!

Authors

本产品由红海龟科技团队开发。

RedTurtle Technology Site

Changelog

0.3.0 (2012-02-15)

  • 现在,您可以在使用actions[keul]时添加runtime参数
  • 更新文档并从错误中修复[keul]

0.2.0 (2012-01-15)

  • 添加了新选项:unrestricted(您通常不需要这个,真的)[keul]
  • 添加了新选项:username[keul]

0.1.0 (2012-01-11)

  • 初始版本

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java无法在未设置数据源的情况下启动springboot应用程序   返回/泛型的类型?   java通过在navigationView中按id重新加载navigationView内容   java实现安卓的状态更新   java Equals()对于两个相等的字符串不返回true   java如何保存屏幕截图(matlab)   java GWT如何在重新加载页面之前确保函数已完全执行   java在Groovy中实现ObjectJSON映射的标准方法是什么?   java在ApacheTomcat中,是否可以通过连接器过滤多个访问日志文件?   java当JVM达到其Xmx限制时,它会强制垃圾收集吗?   如何在JAVA中生成包含特定数字的不同随机数列表?   rcp中透视图之间的java切换   java理解名为“分区”的Linkedlist算法中的无限循环   RestTemplate的java测微计统计信息   Android中使用自定义服务BLE的java读/写特性   java验证输入以确保负数   关于Java扫描器的io基本查询   java如何使用子字符串或其他函数将字符串拆分为单词?   java Storm群集重复元组