attachmentav/virus-scan-sdk
AttachmentAV Virus Scan SDK for Laravel and PHP makes it easy to scan file uploads and email attachments for viruses and malware. Integrate the AttachmentAV API with a simple, framework-friendly client to check files before storing or forwarding them.
widdix/attachmentav-sdk-php is a thin client for the attachmentAV scanning API, so it directly frames the buy-side of the decision: pay per scan for a hosted AV engine vs. standing up and patching ClamAV/ModSecurity yourself. The SDK's existence lowers the integration estimate for the "buy" option to hours rather than weeks, which usually flips the comparison.composer.json rather than treating it as an unversioned experiment.Consider it when:
Look elsewhere when:
Caution on this release: the v1.0.0 notes contain only a changelog link — no migration guidance, no API surface description. Treat the tag as "API now stable," not as evidence of a specific feature set. Confirm the supported scan triggers, callback/webhook contract, size limits, and region options against the repository README before committing to a design.
For executives (one paragraph): We currently accept files from users with no malware check, which is a standing security and compliance exposure — one infected invoice or resume reaching an employee or customer is a reportable incident. Buying a hosted scanning service and wiring it in through this SDK is a small, bounded piece of work (days, not a quarter), carries no infrastructure for us to operate or patch, and scales with usage rather than requiring upfront spend. It also gives us a clean, documented answer to the "how do you handle malicious uploads?" question that shows up in every enterprise security review. The main trade-off to accept is that file contents leave our environment for scanning, and cost grows with volume — both worth a short legal and finance sign-off before we start.
For engineering (one paragraph): This is a thin, Composer-installable client for the attachmentAV scanning API — it does not run detection locally, it wraps the HTTP calls. Integration is roughly: add the dependency, configure credentials and region, submit file bytes or a URL at the ingestion point, then handle the verdict. Design for the asynchronous path from day one: park uploads in a quarantined state, let the scan callback/webhook release or reject them, and make that state visible in the UI. Wrap the SDK behind our own Scanner interface so we are not coupled to one vendor's method names, pin the ^1.0 constraint now that a stable tag exists, and make sure credentials live in secrets management rather than .env files in the repo. Confirm size limits and timeout behavior against the vendor docs before we size the queue and retry policy — the v1.0.0 release notes themselves are just a changelog link, so the README is the source of truth.
How can I help you explore Laravel packages today?