This commit was merged in pull request #184.
This commit is contained in:
@@ -6,6 +6,7 @@ namespace OCA\Mitgliederverwaltung\AppInfo;
|
|||||||
|
|
||||||
use OCA\Mitgliederverwaltung\Middleware\AuthorizationMiddleware;
|
use OCA\Mitgliederverwaltung\Middleware\AuthorizationMiddleware;
|
||||||
use OCA\Mitgliederverwaltung\Middleware\RateLimitMiddleware;
|
use OCA\Mitgliederverwaltung\Middleware\RateLimitMiddleware;
|
||||||
|
use OCA\Mitgliederverwaltung\Middleware\SecurityHeadersMiddleware;
|
||||||
use OCP\AppFramework\App;
|
use OCP\AppFramework\App;
|
||||||
use OCP\AppFramework\Bootstrap\IBootContext;
|
use OCP\AppFramework\Bootstrap\IBootContext;
|
||||||
use OCP\AppFramework\Bootstrap\IBootstrap;
|
use OCP\AppFramework\Bootstrap\IBootstrap;
|
||||||
@@ -21,6 +22,7 @@ class Application extends App implements IBootstrap {
|
|||||||
public function register(IRegistrationContext $context): void {
|
public function register(IRegistrationContext $context): void {
|
||||||
$context->registerMiddleware(AuthorizationMiddleware::class);
|
$context->registerMiddleware(AuthorizationMiddleware::class);
|
||||||
$context->registerMiddleware(RateLimitMiddleware::class);
|
$context->registerMiddleware(RateLimitMiddleware::class);
|
||||||
|
$context->registerMiddleware(SecurityHeadersMiddleware::class);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function boot(IBootContext $context): void {
|
public function boot(IBootContext $context): void {
|
||||||
|
|||||||
@@ -0,0 +1,34 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace OCA\Mitgliederverwaltung\Middleware;
|
||||||
|
|
||||||
|
use OCP\AppFramework\Http\DownloadResponse;
|
||||||
|
use OCP\AppFramework\Http\Response;
|
||||||
|
use OCP\AppFramework\Middleware;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adds security headers to download responses.
|
||||||
|
*
|
||||||
|
* Ensures all file download responses include:
|
||||||
|
* - X-Content-Type-Options: nosniff (prevents MIME-type sniffing)
|
||||||
|
*
|
||||||
|
* Content-Disposition: attachment is already set by Nextcloud's
|
||||||
|
* DownloadResponse class.
|
||||||
|
*
|
||||||
|
* Part of Issue #173.
|
||||||
|
*/
|
||||||
|
class SecurityHeadersMiddleware extends Middleware {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add security headers after the controller action returns a response.
|
||||||
|
*/
|
||||||
|
public function afterController($controller, $methodName, Response $response): Response {
|
||||||
|
if ($response instanceof DownloadResponse) {
|
||||||
|
$response->addHeader('X-Content-Type-Options', 'nosniff');
|
||||||
|
}
|
||||||
|
|
||||||
|
return $response;
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user