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

Zum Weiterlesen

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.