Beveiliging en beheer voor NextPDF op CodeIgniter 4
In het kort
Sectie met titel “In het kort”Deze pagina beschrijft de dreigingen waartegen deze integratie bestand moet zijn, de maatregelen die in de broncode van het pakket zijn geverifieerd en de operationele regels die je moet volgen voor een veilige implementatie.
Dreigingsmodel
Sectie met titel “Dreigingsmodel”Je moet rekening houden met drie aanvalsoppervlakken waarop een aanvaller invloed kan hebben.
- Payload van de wachtrijtaak. Een wachtrij slaat taakgegevens op. Een aanvaller met toegang tot de broker kan die gegevens wijzigen. Behandel ze als niet-vertrouwde, gedeserialiseerde invoer.
- Bestandsnaam van de respons. Een gebruiker kan de downloadbestandsnaam opgeven. Een kwaadaardige naam kan headerinhoud injecteren.
- Configuratiepaden. Het lettertypepad en de ondertekeningspaden komen uit de configuratie. Een kwaadaardig pad kan lezen vanaf of schrijven naar de verkeerde locatie.
Maatregel 1 — Allowlist voor wachtrijpayload
Sectie met titel “Maatregel 1 — Allowlist voor wachtrijpayload”De wachtrijtaak behandelt de payload als niet-vertrouwde, gedeserialiseerde gegevens. De Application Security Verification Standard (ASVS) van het Open Worldwide Application Security Project (OWASP) vereist veilige invoerverwerking voor gedeserialiseerde, niet-vertrouwde gegevens (ASVS V1.5.2).
Geverifieerde maatregelen in GeneratePdfJob:
- De builder moet een niet-lege string zijn. De taak weigert elk ander type.
- De builder moet voldoen aan het patroon
App\PdfBuilders\<Class>::<method>. De taak weigert elke andere namespace, gewone functies en payloads met een prefix of suffix. - De builder moet aanroepbaar zijn. De taak weigert een string die aan het patroon voldoet maar niet kan worden geresolved.
Samen blokkeren deze regels willekeurige code-uitvoering via een gemanipuleerde wachtrijpayload. De tests van het pakket controleren elk weigeringsgeval.
Maatregel 2 — Beperking van het uitvoerpad van de wachtrij
Sectie met titel “Maatregel 2 — Beperking van het uitvoerpad van de wachtrij”De taak schrijft een bestand naar schijf. OWASP ASVS vereist een veilige verwerking van paden wanneer een toepassing bestandspaden aanmaakt voor bestandsbewerkingen (ASVS V5.3.2).
Geverifieerde maatregelen in GeneratePdfJob:
- Het uitvoerpad moet een niet-lege string zijn.
- De taak normaliseert het pad vóór elke controle. Daarbij herleidt de taak
.- en..-segmenten en zet zij de scheidingstekens om. - Het genormaliseerde pad moet binnen
WRITEPATH/pdfs/vallen. De taak weigert een map op hetzelfde niveau die dezelfde naamprefix deelt (pdfs-evil/). - Het pad moet eindigen op
.pdf(hoofdletterongevoelig).
Deze regels blokkeren willekeurige bestandsschrijfacties via een gemanipuleerde payload.
Maatregel 3 — Verharding van responsheaders
Sectie met titel “Maatregel 3 — Verharding van responsheaders”PdfResponse voegt een vaste, verharde set headers toe aan elke Portable Document Format (PDF)-respons:
| Header | Waarde |
|---|---|
X-Content-Type-Options | nosniff |
X-Frame-Options | DENY |
Content-Security-Policy | default-src 'none' |
X-Robots-Tag | noindex, nofollow |
Referrer-Policy | no-referrer |
Cache-Control | private, max-age=0, must-revalidate |
Het pakket saneert de bestandsnaam voordat deze in de header terechtkomt. Het verwijdert padscheidingstekens, nulbytes en carriage return/line feed (CR/LF). Het escapet dubbele aanhalingstekens voor de vorm tussen aanhalingstekens. Het voegt een Request for Comments (RFC) 5987-filename*=UTF-8''…-parameter toe voor een niet-ASCII-naam. Een lege naam wordt document.pdf.
Maatregel 4 — Validatie van configuratiepaden
Sectie met titel “Maatregel 4 — Validatie van configuratiepaden”Het lettertyperegister weigert een fontsPath-waarde die een stream wrapper (://) of een nulbyte bevat. Het werpt een runtimefout op. Dit blokkeert wrapper-paden zoals php:// of phar://.
Maatregel 5 — Minimaal oppervlak van de servicelocator
Sectie met titel “Maatregel 5 — Minimaal oppervlak van de servicelocator”CodeIgniter 4 biedt geen PHP Standards Recommendation 11 (PSR-11)-container. Het gebruikt een Services-locator. PSR-11 §1.3 raadt het servicelocator-patroon af (modaal SHOULD NOT). Het pakket houdt het oppervlak van de locator klein: elke service heeft één benoemde factory-methode. Resolve services aan de controllergrens. Geef concrete objecten naar binnen door. Geef de Services-klasse niet door aan domeincode.
Ondertekening en TSA-operaties (NextPDF Pro / Enterprise)
Sectie met titel “Ondertekening en TSA-operaties (NextPDF Pro / Enterprise)”De ondertekeningsservice blijft standaard inactief. Deze wordt alleen geactiveerd wanneer signature.enabled true is en signature.certificate niet leeg is. Het standaardniveau voor handtekeningen van het pakket is B-B. NextPDF Pro levert de B-B-baselinehandtekening. Validatie op lange termijn is een afzonderlijke Enterprise-functie, die wordt gedocumenteerd in de Premium-referentie en niet hier.
Operationele regels:
- Houd certificaat- en sleutelbestanden buiten versiebeheer. Lever ze aan via
.envof een secrets manager. - Laat
tsa.allow_insecure_httpin productie opfalsestaan. Een onversleuteld Time Stamping Authority (TSA)-kanaal is niet acceptabel. - Stel
tsa.pinned_public_keysin wanneer de TSA een stabiele sleutel publiceert. Houdtsa.warn_on_key_rotationoptruestaan. - Beperk leestoegang tot het sleutelbestand tot de toepassingsgebruiker.
Operationele checklist
Sectie met titel “Operationele checklist”- Pin alle vastgelegde versies in
composer.lock. - Vereis
codeigniter4/queuein de toepassing die workers uitvoert. - Voer de wachtrijworker uit als een gebruiker met beperkte rechten. Geef deze uitsluitend schrijftoegang tot
WRITEPATH/pdfs/. - Geef de worker dezelfde NextPDF-extensies als de weblaag. Een ondertekende PDF heeft NextPDF Pro of Enterprise nodig in de workeromgeving.
- Controleer of de
mbstring- enzlib-extensies beschikbaar zijn in elke runtime die een PDF opbouwt. - Controleer of de responsheaders de reverse proxy overleven.
- Log de PDF-generatie met context. Log geen certificaatmateriaal of sleutelwachtwoorden.
Conformiteit
Sectie met titel “Conformiteit”- De verwerking van de wachtrijpayload sluit aan op OWASP ASVS V1.5.2.
- De verwerking van het uitvoerpad van de wachtrij sluit aan op OWASP ASVS V5.3.2.
- Het ontwerp van de locator volgt de richtlijnen van PSR-11 §1.3.
Commerciële context
Sectie met titel “Commerciële context”NextPDF core is gelicentieerd onder Apache-2.0. Trust anchors voor handtekeningen en TSA-verharding zijn van toepassing wanneer NextPDF Pro of Enterprise is geïnstalleerd. Het CodeIgniter-pakket stelt de bijbehorende servicemethoden beschikbaar, die null retourneren totdat het bijbehorende Premium-pakket is geïnstalleerd. Zie </get-license/?intent=codeigniter-signing>.
Zie ook
Sectie met titel “Zie ook”- /integrations/codeigniter/production-usage/ — correcte registratie en dispatch van de wachtrij.
- /integrations/codeigniter/configuration/ — ondertekening, TSA en padsleutels.
- /integrations/codeigniter/troubleshooting/ — geverifieerde weigeringsberichten.
- /integrations/codeigniter/overview/ — volledig API-oppervlak.