Restricted Python

Zope erlaubt privilegierten Nutzern Page Templates, DTML-Methoden und Python-Skripte *through-the-web zu erstellen. Restricted Python gewährleistet nun, dass diese Nutzer nicht Skripte oder Templates erstellen können, die Zugang zu Ressourcen oder Methoden erlauben würden, die ihnen nicht zugestanden wurden. Die Berechtigungen werden automatisch überprüft und führen ggf. zu einer Unauthorized-Exception.

Es lassen sich sog. Proxy Roles für Templates oder Python-Skripte entweder im ZMI oder in einer *.metadata-Datei angeben. So gibt es z.B. für das Controller Python Script send_feedback.cpy eine korrespondierende Datei send_feedback.cpy.metadata mit folgendem Inhalt:

[default]
proxy=Manager,Anonymous
[security]
View=0:Authenticated

Dies ist notwendig, da das Skript normalerweise von Nutzern aufgerufen wird, die nicht auf die E-Mail-Konfiguration der Site zugreifen dürften, das Skript jedoch bestimmte angaben aus dieser Konfiguration benötigt.

Restricted Python gewährleistet ebenfalls, dass through-the-web erstellte Skripte nicht auf das Dateisystem zugreifen oder unautorisierte Module importieren können, die die Sicherheit des Servers kompromittieren könnten. Lediglich die von``AccessControl`` in allow_module() und allow_class() angegebenen Module und Klassen können importiert werden. Zusätzlich werden alle Methoden und Variablen, deren Namen mit einem Unterstrich _ beginnen, als privat betrachtet und können nicht aufgerufen werden.

Durch diese Sicherheitsmechanismen sollten Administratoren bei sachgemäßer Handhabung daran gehindert werden, versehentlich Sicherheitslücken in eine Anwendung zu reißen. Bei unsachgemäßer Handhabung kann jedoch weiterhin erheblicher Schaden angerichtet werden.