Security

Security Advisories

Plone Announce Mailinglist-Mailingliste

Eine Mailingliste mit extrem geringem Datenaufkommen, für neue Releases und Sicherheitshinweise. Die Liste ist moderiert und nur das Plone-Team kann auf dieser Liste veröffentlichen.

RSS Feed of Plone Security Advisories

RSS 1.0-Feed

Das Abonnieren der Mailingliste oder des RSS-Feed wird unbedingt empfohlen.

Plone-Hotfixes

Einen Überblick, welche Plone-Versionen welche Hotfixes benötigen, erhalten Sie unter Plone Hotfixes.

plone.protect

plone.protect bietet Methoden um die Sicherheit von Web-Formularen in Plone zu erhöhen.

Einschränken der Requests auf HTTP-POST

from plone.protect import PostOnly
from plone.protect import protect

@protect(PostOnly)
def something(self, param, REQUEST=None):
    pass

Form authentication (CSRF)

Cross-Site-Request-Forgery CSRF ist ein Angriffsverfahren, bei dem ein ein HTTP-Formular an einen anderen Ort übermittelt wird und anschließend die Parameter ausgewertet werden. Form authentication soll verhindern, dass diese Parameter ausgewertet werden können da zunächst die Authentizität überprüft wird.

Der erforderliche Token kann einfach generiert werden mit:

<span tal:replace="structure context/@@authenticator/authenticator"/>

Zur Überprüfung des Tokens können verschiedene Methoden verwendet werden:

  1. ZCA:

    authenticator=getMultiAdapter((context, request), name=u"authenticator")
    if not authenticator.verify():
        raise Unauthorized
    
  2. mit einem Decorator:

    from plone.protect import CheckAuthenticator
    from plone.protect import protect
    
    @protect(CheckAuthenticator)
    def something(self, param, REQUEST=None):
        pass
    
  3. Anfrage an einen Funktionsvalidator weiterreichen:

    from plone.protect import CheckAuthenticator
    ...
    CheckAuthenticator(self.context.REQUEST)
    ...
    

Automatischer CSRF-und Clickjacking-Schutz

Seit Version 3 bietet plone.protect einen automatischen CSRF-Schutz indem automatisch ein Auth-Token in allen internen Formularen verwendet wird, wenn der Benutzer angemeldet ist oder in die ZODB geschrieben werden soll.

Zum Schutz vor Clickjacking setzt Plone zudem den X-Frame-Options-Header auf SAMEORIGIN.

Um diesen Wert zu ändern gibt es drei Möglichkeiten:

  1. In einem View überschreiben, z.B. mit:

    self.request.response.setHeader ('X-Frame-Options "," AllowAll'))
    
  2. Im Proxy-Server überschreiben

  3. Die Umgebungsvariable PLONE_X_FRAME_OPTIONS ändern

s.a. Debugging CSRF Protection False Positives in Plone

Siehe auch

Plone Developer Documentation: Security

Zope security facilities, Sandboxing and SELinux

PySprint: Sicherheit und Datenschutz bei Zope-Anwendungen

Anhand des deutschen Bundesdatenschutzgesetz (BDSG) wird überprüft, wie Zope-Anwendungen diesen Anforderungen gerecht werden können.

WebLion: Secure Zope

Declare IP-Addresses and iptables config

Steve McMahon, Eric Rose: Protecting Plone From The Big Bad Internet

Presentation from Plone Conference 2008 in Washington, D.C.

Security overview of Plone

The ten most common security issues in web applications, and how Plone addresses them.

zopyx.plone.cassandra

Show all assigned local roles within a subtree for any Plone 4 site.