Download the PHP package dgtlss/warden without Composer
On this page you can find all versions of the php package dgtlss/warden. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download dgtlss/warden
More information about dgtlss/warden
Files in dgtlss/warden
Package warden
Short Description A deterministic Laravel security gate for CI and deployment pipelines
License MIT
Informations about the package warden
Warden
A deterministic security gate for Laravel CI and deployment pipelines.
Introduction
Warden audits locked production dependencies, supply-chain configuration, and high-confidence Laravel production settings without becoming part of the deployed application.
Requirements
- PHP 8.3–8.5
- Laravel 12 or 13
- Composer 2
- npm only when a
package-lock.jsonis present
Installation
Install Warden as a development dependency:
Laravel discovers Warden automatically. If package discovery is disabled, register Dgtlss\Warden\Providers\WardenServiceProvider::class in your application's providers array.
Usage
Run Warden before pruning development dependencies from the production artifact:
Initialize Warden safely and optionally generate a dedicated CI file:
warden:init never overwrites an existing config/warden.php or root GitLab pipeline. --force may replace only Warden-owned generated CI files. Publishing with vendor:publish --tag=warden-config remains available for manual setups.
CI usage
The default command uses the CI profile, audits production dependencies, reports every finding, and fails on low severity or higher:
Common examples:
Machine formats never mix progress or diagnostic prose into stdout. Scanner failures are included in the report and exit with code 2.
Exit codes
| Code | Meaning |
|---|---|
0 |
Every audit completed and no blocking finding met --fail-on |
1 |
One or more blocking findings met --fail-on |
2 |
Configuration, tool, timeout, malformed output, or audit execution failure |
Profiles
| Profile | Behavior |
|---|---|
ci |
Default. Static repository and dependency checks without assuming a runtime .env exists |
production |
Adds effective Laravel configuration and deployment filesystem checks |
local |
Static checks suitable for a developer workstation |
CI environment variables do not disable production checks. Use --profile=production when the pipeline has loaded the intended deployment configuration.
Built-in audits
supply-chain: lockfile presence/synchronization, secure Composer repositories, plugin allow-listing, and JavaScript lockfile supportcomposer: Composer advisories, malware, and abandoned production packages fromcomposer.locknpm: npm advisories frompackage-lock.json, auto-detected without a flaglaravel-config: tracked.envdetection and production application/session/tooling rulesplatform: offline PHP and Laravel support-window enforcement, including Composer's exact platform targetsource: parser-backed PHP taint analysis, Blade review, and redacted credential detectionstorage: production-only operational warnings; these do not fail the security gate
Yarn, pnpm, and Bun lockfiles are detected but are not yet parsed. Warden reports the limitation so the package-manager-native audit can be added as a separate CI step.
Source security model
Warden parses each selected PHP file once and distinguishes enforcement from review guidance:
- Blocking rules require a high-confidence condition such as request-controlled data reaching a command, raw output, outbound URL, redirect, deserializer, or filesystem sink. Other blocking rules cover interpolated raw SQL, disabled TLS verification, provider-format credentials, weak constant ciphers, and explicit CSRF middleware removal.
- Advisory rules highlight unescaped Blade output, forms without an obvious CSRF directive, mass-assignment disabling, debug calls, sensitive logging, weak contextual hashing/randomness, and secret-like literals.
Credentials are never copied into reports. Warden emits only the provider, location, and a redacted description; the secret contributes only a one-way hash to the stable fingerprint.
Default PHP scan paths are app, bootstrap, config, and routes; Blade templates are read from resources/views. File paths, exclusions, and the 1 MiB file limit are configurable under warden.audits.source. A selected file that cannot be read or parsed makes the scan incomplete and exits 2.
Rule policy
Every configurable rule has a stable ID and a built-in disposition. Override one without suppressing individual occurrences:
Allowed values are enforced, advisory, and off. Unknown rule IDs and invalid values are configuration errors. Advisory findings remain visible in every report but do not affect exit 1; suppressions and baselines still apply to them.
See the complete rule catalogue for stable IDs, default dispositions, and rationale.
Supply-chain review window
Composer packages released within three days produce an advisory. A recent package becomes a blocking critical finding when it is a Composer plugin or registers autoload.files, because it can execute automatically. The window is offline, uses composer.lock timestamps, respects --scope, and is configurable with warden.audits.supply_chain.minimum_release_age_days.
Reviewed suppressions
Suppressions are exact, documented, and expiring. Wildcards are not supported.
An expired or malformed suppression is a configuration error and exits 2.
Baselines
Legacy applications can commit an explicit fingerprint baseline while continuing to fail on new findings:
This creates warden-baseline.json. Baseline generation refuses to write a file if any audit is incomplete.
Reports
Warden supports:
console: readable terminal reportjson: versioned Warden schema with audits, blocking/advisory counts, findings, ignored findings, errors, and summary; the schema ships atresources/schemas/warden-report-2.0.0.jsongithub: GitHub Actions workflow annotationsgitlab: GitLab dependency scanning report schema 15.2.4sarif: SARIF 2.1.0 for GitHub code scanning and compatible platformsjunit: portable JUnit XML for Jenkins and other CI systems
Advisory findings render as notices in GitHub and skipped tests in JUnit. SARIF and JSON preserve the blocking property.
--output-file=- writes to stdout. Relative file paths are resolved from the Laravel application root.
Notifications
Notifications are opt-in and never affect the audit exit code:
Configure any combination of:
Each channel is dispatched once. Delivery failures are written to stderr after the report is produced.
Custom audits
Custom audits receive the immutable audit context and return a typed result:
Register the class in config/warden.php under custom_audits.
Testing
Changelog
Please see the releases page for a list of changes.
Contributing
Please see UPGRADE.md before changing the dependency constraint.
Security Vulnerabilities
Please report security vulnerabilities privately using GitHub Security Advisories.
License
Warden is open-sourced software licensed under the MIT license.
All versions of warden with dependencies
illuminate/console Version ^12.0|^13.0
illuminate/contracts Version ^12.0|^13.0
illuminate/encryption Version ^12.0|^13.0
illuminate/http Version ^12.0|^13.0
illuminate/support Version ^12.0|^13.0
guzzlehttp/guzzle Version ^7.0
nikic/php-parser Version ^5.8
symfony/finder Version ^7.2|^8.0
symfony/process Version ^7.2|^8.0