burti/ass-xmlsecurity
burti/ass-xmlsecurity adds XML security helpers to Laravel, protecting against XXE and XML injection attacks by safely parsing and sanitizing untrusted XML input. A small utility package for apps that handle XML from external sources.
Architecture fit This is not a Laravel package — it is a raw PHP library for XML Encryption (XMLEnc) and XML Signature (XMLDSig), with no service provider, facade, config file, or container bindings. That is not disqualifying: XML canonicalization and signature validation are exactly the kind of low-level primitive that should not be Laravel-aware. The real fit question is whether the application has any legitimate need for XML crypto at all. In a Laravel estate that means SAML 2.0 SSO, SOAP/WS-Security, SAML assertions in OAuth flows, e-invoicing (UBL, FacturaE, FatturaPA), or a handful of legacy payment/B2B gateways. If none of those are on the roadmap, this is a dead dependency before it is written.
Integration feasibility
Mechanically trivial: composer require (assuming it resolves on Packagist under the burti/ass-xmlsecurity name), autoload the namespace, wrap the signing and verification calls in one or two application services. The library will require ext-dom, ext-libxml, and ext-openssl, which are present on virtually every PHP runtime. There is no framework coupling to fight.
The problem is not mechanical feasibility, it is provenance. Zero stars, zero dependents, a personal/organizational repo (CasaVaticano), and a name that reads like a fork implies this is an internal extraction — likely derived from robrichards/xmlseclibs or simplesamlphp/xml-security. There is no visible CI badge, release history, or security policy in the metadata provided.
Technical risk — this is the dominant concern
simplesamlphp/xml-security and robrichards/xmlseclibs are mature, widely deployed, and actively audited. Choosing the fork without a documented reason is unjustifiable in a design review.Key questions
LIBXML_NOENT handling, libxml_disable_entity_loader / PHP 8 defaults)?Stack fit
Treat this as an infrastructure primitive, not an application dependency. Wrap it behind two narrow interfaces — XmlSigner and XmlVerifier — bound in a dedicated service provider. Nothing in the domain layer should ever import the vendor namespace. This gives you a clean seam to swap in simplesamlphp/xml-security later without touching call sites.
Migration path
Recommended sequence: do not adopt this package first. Start with the maintained alternative (simplesamlphp/xml-security if SAML, robrichards/xmlseclibs if generic). Only migrate to this fork if a concrete, documented defect in the upstream forces it — and then vendor it as a patch, not as a replacement. If the team has already committed to burti/ass-xmlsecurity, plan the abstraction layer from day one so exit cost is one class.
For SAML specifically, the right answer is almost never a raw XML crypto library. Use a maintained SP package (onelogin/php-saml / laravel-saml2) that owns the protocol-level defenses — assertion replay, audience restriction, InResponseTo, clock skew — which a signing library does not provide.
Compatibility
Pin the PHP floor explicitly in composer.json and verify against the target matrix (e.g., PHP 8.1–8.3). Confirm libxml2 ≥ 2.9 and OpenSSL 3.x behavior — the OpenSSL 3 provider transition changed RSA key handling and has broken poorly-maintained crypto code. Confirm the library does not rely on libxml_disable_entity_loader(), which was deprecated in PHP 8.0.
Sequencing
Maintenance You will own this. With zero dependents, there is no upstream community to absorb bug fixes, so every libxml2/OpenSSL/PHP upgrade becomes your regression test. Budget ~2–4 days per year of proactive maintenance plus reactive time on any TLS/crypto stack change. The abstraction layer is what keeps that cost bounded.
Support No issue triage, no CVE feed, no release cadence. If a signature-validation bypass is disclosed in the upstream library this was forked from, you will not be notified — you will have to monitor the upstream project manually. That is a real operational obligation, not a theoretical one.
Scaling Non-issue in the usual sense. XML signing and verification are CPU-bound (canonicalization plus one RSA operation), roughly single-digit milliseconds per document at 2048-bit RSA. Auth flows and e-invoicing run at low QPS, so this will never be the bottleneck. The scaling concern is memory and parser safety: never parse untrusted XML into a DOM without size limits and entity expansion disabled. For high-volume document signing, keep the signing key in a KMS/HSM rather than in application memory, which this library will not do for you.
Failure modes to instrument
NotBefore/NotOnOrAfter windows failing on container drift. Run NTP.Ramp-up
Moderate to high. A competent Laravel engineer can integrate this in a day; understanding why a signature failed takes XMLDSig expertise — exclusive canonicalization, enveloped vs. detached signatures, ID attribute resolution, transform chains. Assume 3–5 days of ramp-up for one engineer to reach genuine confidence, and treat that engineer as the designated owner. Do not let this become a library that "several people sort of touched."
Recommendation
Low opportunity score (17) and zero adoption are consistent with the assessment: this is a provenance-unclear fork of a solved problem. Adopt only with a documented fork rationale and a mandatory security read-through; otherwise standardize on simplesamlphp/xml-security or a maintained SAML SP package and keep the abstraction seam regardless.
How can I help you explore Laravel packages today?