Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Laravel Laravel Package

shieldci/laravel

ShieldCI for Laravel brings automated security and configuration checks to your CI pipeline, helping catch risky settings, exposed debug info, and common Laravel misconfigurations before they reach production.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. v1.20.0 is a second consecutive additive release, but it is materially larger than v1.19.0: eight items spanning one new capability, one DX change, and six correctness fixes across five distinct checks. Two architectural notes matter. First, OriginReachabilityChecker::probeFollowingSameHost() plus the new RedirectChain value object is the first genuinely new public surface the package has shipped in this window — it extracts and formalizes redirect-following that was previously implicit, and it is consumed by both the asset/origin probe and the xss-vulnerabilities CSP check. Second, the phpstan change is a DX/diagnostic improvement (explaining an unsupported level before invocation) rather than a check-logic change, which is a welcome separation of concerns. No new services, providers, storage, or config keys are introduced.

Integration feasibility. Still a drop-in composer update — no migrations, no config publish, no consumer-facing API changes required. However, this release is more behaviorally significant than v1.19.0, and unlike v1.19.0 most of the deltas move in the direction of "fewer false positives," which is good for signal quality but bad for baseline stability. The single highest-impact item is the phpstan fix: teams that configured max were silently being evaluated at level 5, so honoring the configured level will surface a backlog of pre-existing static-analysis findings in one step. That is a correct outcome but will read as a regression to anyone not warned.

Technical risk. Low-to-moderate. No breaking changes or deprecations are announced, and every item is defensible on its own merits, but five of the eight change check outcomes:

  • phpstan 'max' pass-through (#504) — highest impact. Repos configured at max have been under-analyzed; they will now likely fail. Budget remediation time, not just a version bump.
  • xss-vulnerabilities off-host redirect + unreachable-origin warning (#499) — fixes the Cloudflare Access false positive (good) but converts "could not check" from pass to warn. Combined with redirect-following, this check now depends on network reachability in a way it previously did not.
  • missing-error-tracking reads Nightwatch flags from process environment (#498) — closes a real CI gap where .env is absent but env vars are injected; may flip failures to passes and exposes teams relying on .env-only detection.
  • debug-mode print_r/var_export return values and debug_backtrace (#505) — removes two well-known false-positive classes. Low risk, high credibility win.
  • config-outside-config subdomain-only marker and reserved TLDs (#506) — dev.to noise disappears; .test/.localhost/.local hosts now reported. Mixed: fewer noise findings, some new local-dev findings.

Key questions.

  1. Is probeFollowingSameHost()/RedirectChain intended as stable public API, and what is the redirect depth limit and cycle detection policy?
  2. Does following redirects multiply outbound requests per check (asset + CSP), and what are the timeout/retry semantics for a slow or looping chain?
  3. For the phpstan fix: is the previously-forced level 5 documented anywhere, and can we get a migration note enumerating affected configs?
  4. Does the process-environment read for Nightwatch precedence-rank against .env, and does it cover the full flag set or only the enable/disable toggle?
  5. Has the shared tracker list been extended beyond Flare/Inspector/Nightwatch, or is the answer from v1.19.0 still current (config-extensible vs. allowlist-only)?
  6. For xss-vulnerabilities, is the new "unreachable origin" warning distinguishable from a genuine CSP finding in the report output — i.e. can we gate on severity, not just presence?

Integration Approach

Stack fit. Unchanged: Laravel/PHP, Composer-distributed, runs locally via the artisan entry point or as a CI gate alongside static analysis and dependency auditing. The phpstan fix means the package now interacts more honestly with the PHPStan stage in the same pipeline — expect correlated movement between the two stages, so sequence them deliberately.

Migration path. Do not float. Pin explicitly and upgrade in two passes:

  1. Pass A — upgrade only, capture diff. Run in a feature branch against the saved v1.19.0 baseline. Classify every delta into corrected detection (accept) vs. genuine new defect (remediate) vs. environmental (suppress).
  2. Pass B — CI policy adjustment. Land gate changes with the upgrade, not after. For phpstan, if the repo is configured at max, treat this as a separate remediation workstream: either fix the findings or explicitly pin a lower level in configuration, which is now finally honored rather than ignored.
  3. Nightwatch/env-var validation. Confirm CI injects the relevant flags as process env vars; verify the new detection fires as intended in a pipeline run, not just locally.
  4. Baseline re-pin. Regenerate the stored baseline artifact and note the version alongside it.

Compatibility. PHP/Laravel constraints assumed unchanged for a minor release; no config or migration work. The compatibility consideration is again policy: xss-vulnerabilities unreachable-origin now warns instead of passes, so any gate that fails on warnings will tighten unexpectedly. Conversely, a gate that only fails on High severity will silently loosen on the asset check. Both edges need an explicit decision.

Sequencing. Same-stage landing remains right: upgrade + policy adjustment in one change set. Across repos, pilot first — but split the pilot criteria this time. Use the pilot to (a) size the phpstan fallout, which is the only item likely to require engineering hours, and (b) confirm the redirect-following behavior doesn't lengthen pipeline runtime materially or trip egress restrictions. Roll the low-risk fixes (debug-mode, config-outside-config) broadly and immediately; hold the phpstan fix behind remediation capacity if the pilot shows a large backlog.

Operational Impact

Maintenance. Low. Additive minor release, no deprecations, consolidated detection logic. The one new maintenance obligation is tracking the RedirectChain/probeFollowingSameHost() surface — if internal tooling wraps the checker, pin the version and review its signature in subsequent minors.

Support. The support profile shifts from "why is this failing?" to "why did this stop failing / start warning?":

  • Teams that configured max will ask why static analysis suddenly blocks them. Pre-empt with a short note: this was always the configured intent, level 5 was being enforced instead.
  • Teams on Cloudflare Access or similar SSO-gated origins will see the CSP false positive disappear — good, but they should confirm the new warning path isn't surfacing a genuine gap.
  • The Nightwatch env-var read may produce inconsistent results between developer machines (.env present) and CI (env vars only) if precedence is unclear; document which source wins.

Scaling. Negligible compute, with one caveat that got slightly worse: redirect-following means each origin probe can now issue multiple HTTP requests. In large monorepos or egress-restricted runners, a slow asset host or a redirect chain that terminates at an auth gateway can extend the check's runtime. The v1.19.0 mitigation (unfetchable → warning) still applies, but verify redirect depth limits and per-request timeouts before rolling to many repos, and confirm a redirect loop cannot hang the pipeline.

Failure modes.

  • phpstan fallout at scale — the dominant risk. Repos pinned to max get a large, simultaneous failure wave. Largest source of "the upgrade broke the build" tickets.
  • Warning-blindness compounding. v1.19.0 downgraded unfetchable assets to warnings; v1.20.0 adds a warning for unreachable CSP origins. Two checks can now degrade quietly. Warnings must be surfaced in PR summaries or the gate erodes.
  • Residual false positives from the stricter dev-dependency rule (carried from v1.19.0) — still unconfirmed whether transitive dev deps are followed.
  • Environment-dependent divergence in missing-error-tracking between local (.env) and CI (process env) if precedence is undocumented.
  • Baseline drift — teams diffing against a v1.19.0-era saved report will misread a batch of corrected detections as regressions.

Ramp-up. Very low for engineers — no API or configuration to learn. The onboarding burden is entirely policy and communication: document the phpstan level correction (and expect real work from it), state that warnings are now meaningful and must be reviewed, and re-pin the baseline so the team treats v1.20.0 output as the correct reference rather than noise. A single runbook page covering the phpstan change, the warning semantics, and the allowlist mechanism covers the whole release.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
novasa/laravel-language-center
opencage/geocode
adolfoholzer/parameters
livenetworks/ln-starter
shitoudev/permissionmanager
johannesclimacus/laravel-tui
hocvt/seotools
vitalybaev/sypexgeo
amphibee/themosis-ignition
gito-me/fast-excel
frankyso/laravel-ipaymu
geolize-studio/laravel-chile
boomerangui/chat
cgv/localized-resource
noith/settings
kda/laravel-package
kda/filament-dynamic-navigation
bypersoft/signbox
pairus/product-data
fayne/laravel-filament-cms-core