跳转到主要内容

浏览器表单安全

项目描述

简介

此包包含帮助保护Plone或基于Plone框架构建的应用程序部分的实用工具。

保护装饰器

使用plone.app.protect最常见的方式是通过保护装饰器。此装饰器接受一个包含检查器的列表作为参数:每个检查器将检查请求的特定安全方面。例如

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 POST

如果您只需要允许HTTP POST请求,则可以使用PostOnly检查器

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=getMultiAdapter((request, context), name=u"authenticator")
if not authenticator.verify():
    raise Unauthorized

您可以使用更方便的方法使用 保护 装饰器来做同样的事情

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添加检查器。[wichert]

1.0a1 - 2008年1月27日

  • 首次发布 [wichert]

项目详情


下载文件

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

源分发

plone.app.protect-1.0b1.tar.gz (12.2 kB 查看哈希)

上传时间

构建分发

plone.app.protect-1.0b1-py2.4.egg (18.2 kB 查看哈希)

上传时间

由...