浏览器窗体的安全性
plone.app.protect的Python项目详细描述
简介
这个包包含一些实用程序,可以帮助保护plone的某些部分 或者应用程序构建在plone框架之上。
保护装饰工
使用plone.app.protect最常用的方法是通过protect 装饰工。这个decorator将checkers的列表作为参数:每个 checker将检查请求的特定安全方面。例如:
from plone.app.protect import protect from plone.app.protect import PostOnly @protect(PostOnly) def SensitiveMethod(self, REQUEST=None): # This is only allowed with HTTP POST requests.
这依赖于有一个名为request的参数的受保护方法。
http帖子
如果您只需要允许http post请求,那么可以使用post only 检查人:
from plone.app.protect import PostOnly from plone.app.protect import protect @protect(PostOnly) def manage_doSomething(self, param, REQUEST=None): pass
此检查器仅对http请求使用运算符;其他类型的请求 未检查。
表单验证
web应用程序中的一个常见问题是跨站点请求伪造或csrf。 这是一种攻击方法,攻击者通过欺骗浏览器来执行http 表单提交到其他网站。为此,攻击者需要知道 表单参数。表单身份验证是一种使 攻击者通过添加一个额外的身份验证器来预测这些参数 可以验证。
要使用表单验证器,首先需要将其插入到表单中。 这可以在表单中使用一个简单的tal语句来完成:
<span tal:replace="structure context/@@authenticator/authenticator"/>
这将生成一个包含身份验证信息的html输入元素。 接下来需要在某个地方添加逻辑来验证验证器。这个 可以通过调用authenticator视图来完成。例如:
authenticator=getMultiAdapter((request, context), name=u"authenticator") if not authenticator.verify(): raise Unauthorized
使用protectdecorator可以更方便地执行相同的操作:
from plone.app.protect import CheckAuthenticator from plone.app.protect import protect @protect(CheckAuthenticator) def manage_doSomething(self, param, REQUEST=None): pass
更改日志
1.0b1-2008年3月7日
- 重构代码以提供方法的通用保护修饰符 它以一个跳棋列表作为选项。为两个 身份验证程序验证和http post only。 [威瑟特]
1.0A1-2008年1月27日
- 初次发行 [威瑟特]