# Plugin local_csp

Das Plugin local\_csp erlaubt das Prüfen und Erzwingen von HTTP-Headern nach der "[Content Security Policy (CSP)](https://developer.mozilla.org/en-US/docs/Web/HTTP/Guides/CSP)"

## Content Security Policy (CSP)

Das Plugin ermöglicht es, das Setzen von bestimmten Headern auf einer Moodle-Instanz zu beobachten und die Auswirkungen zu sammeln. Man kann die gewünschten Header anschließend auch setzen.

Das Plugin setzt zum Prüfen den [Content-Security-Policy-Report-Only](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Content-Security-Policy-Report-Only) Header. Dieser Header hat u.a. als Parameter einen *Endpoint*, also eine URL: in der Datei `/local/csp/collector.php` werden die Daten per POST-Request entgegengenommen und in eine Tabelle geschrieben.

Ein Scheduled Task (`cleanup_csp_task`) räumt die Tabelle nach der eingestellten Zeit wieder auf (Standard 26 Wochen: `local_csp | cleanup_duration`).

Zusätzlich zu den "[Content Security Policy (CSP)](https://developer.mozilla.org/en-US/docs/Web/HTTP/Guides/CSP)"-Headern erlaubt das Plugin auch das Setzen von "[Feature-Policy](https://developer.mozilla.org/en-US/docs/Web/API/FeaturePolicy)"-Headern. Hierbei handelt es sich um eine experimentelle Technologie (siehe "[Permissions Policy](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Permissions-Policy)"), mit der kontrolliert werden kann, welche Eigenschaften des Browsers eine Webseite nutzen darf.

### Anzeige von Warnmeldungen

Mit der Einstellung `local_csp | notifications_enable_reported` werden gelbe Kästchen auf jeder Webseite eingeblendet, die über die potentiellen Auswirkungen der aktuell gesetzten Header informieren.

Die Anzeige dieser Warnmeldungen ist an die Capability `local/csp:seenotifications` geknüpft, die standardmäßig für die Rollen *teacher*, *editingteacher* und *manager* gesetzt ist.

[![localcsp_warnings.png](https://kb.moodle-an-hochschulen.de/uploads/images/gallery/2026-07/scaled-1680-/localcsp-warnings.png)](https://kb.moodle-an-hochschulen.de/uploads/images/gallery/2026-07/localcsp-warnings.png)

### Report

Wie oben erwähnt sammelt das Plugin über den *Endpoint* des Headers alle Daten in einer Tabelle. Deren Inhalt kann man sich über den "CSP violation report" ansehen:

[![localcsp_violationreport.png](https://kb.moodle-an-hochschulen.de/uploads/images/gallery/2026-07/scaled-1680-/localcsp-violationreport.png)](https://kb.moodle-an-hochschulen.de/uploads/images/gallery/2026-07/localcsp-violationreport.png)

### Einstellungen

Mit der Einstellung `local_csp | csp_header_enable` aktiviert man das Reporting.

Folgende Direktiven schlägt das Plugin standardmäßig vor:

- `default-src https:;`
- `script-src 'self' 'unsafe-inline' 'unsafe-eval';`
- `font-src https: data:;`
- `style-src https: 'unsafe-inline';`
- `img-src https: data:;`

[![localcsp_settings.png](https://kb.moodle-an-hochschulen.de/uploads/images/gallery/2026-07/scaled-1680-/localcsp-settings.png)](https://kb.moodle-an-hochschulen.de/uploads/images/gallery/2026-07/localcsp-settings.png)

### Links / Quellen

[https://marketplace.moodle.com/plugins/1506](https://marketplace.moodle.com/plugins/1506)

[https://github.com/catalyst/moodle-local\_csp](https://github.com/catalyst/moodle-local_csp)

[https://developer.mozilla.org/en-US/docs/Web/HTTP/Guides/CSP](https://developer.mozilla.org/en-US/docs/Web/HTTP/Guides/CSP)

[https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Content-Security-Policy-Report-Only](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Content-Security-Policy-Report-Only)

[https://moodle.org/mod/forum/discuss.php?d=460784](https://moodle.org/mod/forum/discuss.php?d=460784) - hier gibt es einen Vorschlag für ein Set an Headern

---

Autorin: [Melanie Treitinger](https://forum.moodle-an-hochschulen.de/user/profile.php?id=35), Ruhr-Universität Bochum