Security considerations and configurations for the Caeligo Scheduler Bundle.
All dashboard routes are protected by configurable Symfony security roles.
caeligo_scheduler:
role_dashboard: 'ROLE_ADMIN'
The role_dashboard role is required for:
caeligo_scheduler:
role_crontab: 'ROLE_SUPER_ADMIN'
The role_crontab role (typically more privileged) is required for:
Users without this role will see the crontab status but cannot modify it.
All POST actions in the dashboard are protected with Symfony CSRF tokens:
Each form includes a _token hidden field validated server-side. Invalid tokens result in a flash error and redirect.
Only commands that are:
#[AsSchedulableCommand]can be executed by the scheduler. Arbitrary command names cannot be injected.
Commands are executed as arrays via symfony/process (not shell strings):
$process = new Process([$phpBinary, 'bin/console', $commandName, '--no-interaction']);
This prevents shell injection attacks since arguments are passed directly without shell interpretation.
The crontab entry is strictly template-based:
* * * * * cd '/path/to/project' && '/usr/bin/php' bin/console caeligo:scheduler:run >> /dev/null 2>&1
escapeshellarg()# caeligo-scheduler) ensures only the scheduler's own entry is modified0755Command names used as log filenames are sanitized:
preg_replace('/[^a-zA-Z0-9_\-.]/', '_', $commandName)
This prevents directory traversal in log file paths.
.gitignore/var/scheduler/
When the HTTP trigger is enabled for shared hosting:
role_dashboard and role_crontab to appropriate roles for your applicationrole_crontab as ROLE_SUPER_ADMIN or equivalent#[AsSchedulableCommand]var/scheduler/How can I help you explore Laravel packages today?