浏览器窗体的安全性

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日

  • 初次发行 [威瑟特]

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

推荐PyPI第三方库


热门话题
java CXF和授权   java在网站中部署使用swing创建的表单   java为什么getHeaderField()返回一个字符串,其中getHeaderFields()返回HttpUrlConnection中的Map<String,List<String>>   java如何检测恶意数据包?   webview中的java网页为空   java SWT图像资源,用于将我的所有图像存储在一个位置   java计算数组的最大长度,使平均值小于给定值   java“发件人电话号码无效”和美国号码   将Swing组件作为内容的自定义Java工具提示不会显示   在并发HashMap中重新灰化期间的java检索   Java 7和Tomcat 7.0.64 ClassFormatException:常量池中的字节标记无效   使用JUnit的java assertNull因NullPointerException失败   java内存中的文件是否与文件系统中的文件大小相同?   循环内实例化的类型的java注入依赖项