Algolia Integration Security Review
An Algolia key can carry Admin-level access straight into a browser without anyone noticing. We test what each key can reach, how tenant filters are enforced, and what should never be retrievable. CREST-certified testers, fixed price from £2,620 for a 2-day single-integration scope, quoted within 24 hours.
- Unlimited retesting
- Unlimited pre-retesting
- No hidden fees
“I would highly recommend EJN Labs to any organisation seeking reliable, detailed, and well-managed penetration testing services, particularly for government or enterprise-level projects.”
“There wasn’t another company we could find that could deliver what we needed in the timeframe we needed. The client loved it, and we got instant ROI from the engagement.”
An Algolia API key can combine any of 13 access control list permissions in one string, from search and browse through to deleteIndex and editSettings, with nothing in the key itself to separate one that can query an index from one that can rewrite it.
Why an Algolia integration’s security is decided by which key reaches the browser
Algolia’s own documentation on API keys names two predefined keys: a Search-only API key it calls safe to use in your production frontend code, and an Admin API key that gives access to everything in the account, including every index, and should remain confidential. Custom keys sit between the two, each built from any combination of 13 access control list permissions, from search and browse through to deleteIndex, editSettings and seeUnretrievableAttributes, plus a separate set of optional restrictions covering which indices a key reaches, a per-hour rate limit, a cap on records retrieved, an expiry, allowed HTTP referrers and enforced query parameters. None of that scope is visible from the key’s name or the variable it is stored in; a string called SEARCH_KEY is only a search-only key if its ACL was actually built that way.
For scoping search to a single tenant or user, Algolia’s generateSecuredApiKey method builds a virtual key from a parent key plus a set of restrictions, computing a SHA-256 HMAC with the parent key as the secret and the restrictions as the message; Algolia’s reference is explicit that at least one restriction is required, that a secured key built with the same restrictions as its parent is rejected with a 403, and that an Admin API key can never be used as the parent. Because the parent key is the secret in that calculation, the method only works safely on a server that already holds it: generating a secured key in the browser means shipping the parent key there to compute it, which removes the restriction it was meant to add. Deleting the parent key deletes every secured key derived from it in one action, and Algolia’s documentation confirms a deleted secured key cannot be individually restored even if the parent is. A userToken parameter exists so that many users sharing one IP address are not rate-limited as if they were one user; it does not enforce a tenant or user boundary on its own, which is set entirely by the filters and restrictIndices values baked into the key.
Two index settings decide what a search response can actually expose. unretrievableAttributes excludes named, case-sensitive fields from every response unless the request authenticates with the Admin API key, which makes it the setting for a field used to rank, filter or restrict results that end users should never see directly. attributesToRetrieve works the other way round: objectID is always returned regardless of the setting, a bare wildcard returns every attribute, and Algolia’s own documentation gives a hyphen-prefixed exclusion combined with that wildcard as the way to hide a value such as a custom ranking attribute without removing it from the index. Algolia’s shared responsibility documentation is explicit that Algolia secures the infrastructure and the API key and ACL mechanism itself, while which indices exist, what a key’s restrictions actually enforce and what unretrievableAttributes hides is the customer’s configuration to get right. We test that configuration, not Algolia’s platform. For the wider family of search, cache and streaming systems this scope splits from, see our NoSQL, cache and streaming security review.
SCOPE
What we review in an Algolia integration
Search-Only, Admin and Custom API Keys
Algolia predefines two keys: a Search-only API key its documentation calls safe for production frontend code, and an Admin API key that gives access to everything in the account, including every index. We inventory every key your web app, mobile app, backend and any indexing job actually load, and check each one’s real ACL and restrictions rather than trusting what its variable name suggests it is.
Admin Key Exposure in Frontend or Public Code
Algolia’s security guidance says never to use the Admin API key in any app, generating narrower keys from it instead. We test whether that key, or a custom key with equivalent ACL scope, has reached a browser bundle, a mobile binary, a public repository or a support ticket, and what an attacker holding it could read, write or delete across your indices.
Custom Key ACL Scope Across 13 Permissions
A custom key’s access control list can combine any of the 13 permissions Algolia documents, from search and browse through to deleteIndex, editSettings and seeUnretrievableAttributes, with nothing in the key format itself separating a read-only key from one that can reconfigure an index. We test each custom key’s actual ACL against what the integration calling it needs, and flag any key holding a write, settings or unretrievableAttributes permission it never uses.
Key Restrictions: Indices, Referrers, Rate Limits and Validity
Algolia documents indices, rate limit, records retrieved, validity, HTTP referrers and query parameters as the restrictions a key can carry, each optional and independent of the others. We test whether a key’s indices restriction actually matches the indices your integration serves, whether a referrer or rate-limit restriction is set at all for a key living in the browser, and whether validity is used on any key that should not persist indefinitely.
Secured API Keys and the HMAC Parent-Key Relationship
generateSecuredApiKey builds a virtual key from a parent key and a set of restrictions using an HMAC, and Algolia’s reference confirms the API rejects a secured key carrying the same restrictions as its parent and refuses an Admin key as the parent entirely. We test that every secured key in use actually restricts something beyond its parent, and that the parent key used to generate it never carries broader ACL than the integration needs.
Client-Side or Weak Secured Key Generation
Because the HMAC in a secured key is computed with the parent key as the secret, generating one anywhere other than a server that already holds that parent key means shipping the parent key to compute it, undoing the restriction. We test where in your stack secured keys are actually generated, and whether a userToken, filters or restrictIndices value ever reaches the browser as a parameter an end user could edit before the key is issued.
Tenant and User Filters Enforced Only by the Application
Algolia enforces exactly the filters and restrictIndices values encoded into the key it receives, with no concept of its own for which tenant or user a request belongs to beyond that. We test whether tenant or user isolation is actually carried in a secured key’s filters, or whether the application only adds a tenant identifier to what is displayed while the key itself could return every tenant’s records.
Unretrievable Attributes for Private and Ranking-Only Fields
unretrievableAttributes excludes named, case-sensitive fields from every search response unless the request authenticates with the Admin API key, which makes it the setting for fields used to rank, filter or restrict results without exposing them to the end user. We test whether fields such as internal costs, visibility flags or personal data used only for filtering are actually listed there, rather than sitting in whatever attributesToRetrieve happens to return.
attributesToRetrieve and What a Search Response Actually Returns
attributesToRetrieve always returns objectID regardless of its own setting, and Algolia’s documentation gives a hyphen-prefixed exclusion combined with a wildcard as the way to hide a field, such as a custom ranking value, without removing it from the index. We test what a search-only key’s response actually contains against what the front end displays, since an attribute excluded from the interface is not the same as one excluded from the response an attacker can read in the network tab.
Write-Key Exposure in Crawlers, CI and Build Logs
Algolia’s own guidance warns that a third-party service such as a continuous integration pipeline having a security incident can leak Algolia API keys, and recommends environment variables over hardcoding them for exactly that reason. We test where write-capable keys are stored and referenced in build pipelines, deployment scripts and indexing or crawler jobs, and whether a key with addObject, deleteObject or editSettings scope is any narrower than the single job that actually needs it.
OUR PROCESS
Algolia Integration Security Review: From Scope to Attestation
Scope and Key Inventory
We agree which indices, applications and environments are in scope, and collect every Search-only, Admin, custom and secured API key your integration actually uses across web, mobile and any indexing or crawler jobs.
Key and ACL Mapping
We map each key’s actual ACL, restrictions and, for secured keys, the filters and indices they encode, against what the calling integration or user tier genuinely needs.
Manual Testing
A CREST-certified tester manually tests key scope and exposure, secured key generation, tenant and user filter enforcement, and the private-content settings on each index in scope, chaining findings where they compound.
Attestation and Retest
You get a technical report with CVSS scores and reproduction steps, a walkthrough call, a free retest once fixes are deployed, and an attestation letter for auditors.
CREDENTIALS
Verified Accreditations Auditors Accept
Every credential below is independently verifiable. UK procurement teams, FCA supervisors, ISO 27001 / SOC 2 auditors, and cyber insurance underwriters all recognise these standards.
GET YOUR QUOTE
Get a CREST Algolia pen test quote in 24 hours
A fixed-price quote back in one business day, from a named CREST assessor. No sales pipeline, no chasing.
- CREST and IASME accredited. Testing your auditors and clients already recognise.
- Fast-track testing within 24 hours where required. Free retest of every fix included.
- Live findings via your client portal, not a four-week PDF.
- Fixed price from £3,500 for a single-role, single-app scope, agreed up front. Most engagements run £5,000 and up. No day-rate surprises.
Under NDA Further named references available on a scoping call.
- We reply within one business day with a fixed-price quote from a named CREST assessor.
- You approve the scope and we book a start date, usually within 24 hours.
- Live findings land in your client portal as we test, with a free retest of every fix.
Get your fixed pen test quote in 24 hours
Quote request received
We will reply within one business day with your fixed-price quote from a named CREST assessor.
Your data stays with us. No newsletter signup.
or book a 20-min scoping call first
We reply within one business day. Your data stays with us. No newsletter signup.
COMPLIANCE READY
Reports Mapped to Every Framework
Findings are written so your team can reference the report against each framework without translation work.
ISO 27001:2022
Annex A.8.8 management of technical vulnerabilities plus A.5.15-5.18 and A.8.2-8.5 access control validation.
SOC 2 Type I & II
CC6 logical access, CC7 system operations, CC8 change management evidence.
PCI DSS
Requirement 11.4 application penetration testing across cardholder data environments, including ecommerce penetration testing for online retail platforms.
FCA SYSC
SYSC 4.1.1R, 6.1.1R, 13 mapped to each finding for FCA-regulated firms.
UK GDPR
Article 32 effectiveness testing, customer-data security controls, ICO-acceptable evidence.
Cyber Essentials Plus
Direct certification through our IASME body status, single-vendor delivery.
PRICING
Transparent Algolia Integration Security Review Pricing
Pricing depends on the number of roles, integrations and environments in scope. See our pricing page for how we quote.
2 to 3 testing days
Single user role, basic CRUD application, marketing website with auth. Around 5 working days from kickoff to report.
Get a fixed quote3 to 4 testing days
Multi-role SaaS, business application with payment integration. Around 8 to 12 working days from kickoff to report.
Get a fixed quote4 to 6 testing days
Multi-tenant platform, complex authorisation matrix, integration-heavy applications. Around 15 to 20 working days from kickoff to report.
Get a fixed quoteSECTORS
Sectors We Test Algolia For
Sector-specific scoping for regulated UK organisations.
Fintech & FCA-Regulated
FCA SYSC, Open Banking FAPI 1.0, PSD2 SCA, payment-flow scrutiny, KYC/AML testing.
Fintech sector pageSaaS Companies
SOC 2 Type I & II evidence, multi-tenant boundaries, role escalation, customer-tenant isolation.
SaaS sector pageLaw Firms
SRA Cyber Standard, privileged data, conveyancing fraud defence, partner-tier procurement.
Law firm sector pageHealthcare
NHS DTAC, DSP Toolkit v6, UK GDPR Article 32, EHR systems, telehealth platforms.
Healthcare sector pageInsurance
FCA / PRA Operational Resilience, cyber underwriting, claims data, broker portals.
Insurance sector pagePublic Sector
CCS / G-Cloud framework, NCSC-aligned, citizen-facing services, PSN-compliance scrutiny.
Public sector pageWHY EJN LABS
What You Get From Algolia Integration Security Review
Six concrete differentiators competitors don’t all match.
CREST-Certified Testers, Verifiable
Every test by a CREST-certified pen tester (CRT, CCT APP, CCT INF where applicable). Verify our company status at crest-approved.org.
24-Hour Startup, Where Required
From signed scope to active testing in a single business day for incident response, audit deadlines, or regulator-driven timelines.
Live Findings, Not 4-Week PDFs
Critical issues reported during testing through your client portal. Your team remediates while testing continues.
Audit-Ready Reports
Executive summary plus full technical report with CVSS scores and explicit framework mappings (ISO 27001, SOC 2, PCI DSS, FCA SYSC).
Free Retests, Standard
Verify remediation of every finding before close-out. Letter of attestation for audit submission included. Most competitors charge £1,500-£3,000 per retest.
UK-Based CREST Testers
Every engagement performed by vetted, UK-based CREST-certified testers, matched to your needs, security clearance, and compliance scope.
FAQ
Frequently Asked
What access do you need to test our Algolia integration?
We need every Search-only, Admin, custom and secured API key in scope, or dashboard access to view and generate them, plus a test account or index we can use without affecting production search. Read access to the application code that builds secured keys and filters speeds up the review, though we can test with keys and authenticated access alone.
Will testing touch live data?
We test the indices and application code you nominate, working against your actual keys, restrictions and filters rather than a copy, so we agree exclusions such as deleteIndex or deleteObject operations before testing starts. We do not export real customer data or run destructive tests without that agreement in writing.
Do you test Algolia’s own platform or just our integration?
Algolia is a hosted service, so we never test Algolia’s infrastructure, its API implementation or its side of the shared responsibility for securing the platform. We test how your application creates, restricts and uses API keys, builds secured keys and filters, and configures unretrievableAttributes and attributesToRetrieve on your own indices.
What is out of scope for a single-integration Algolia review?
We never test Algolia’s own source code, infrastructure or account-level platform features, and a separately hosted application that happens to query the same index is scoped and quoted on its own. We test the API keys, ACLs, restrictions, secured key generation, tenant filtering and index settings for the integration you nominate.
Does Algolia have a policy on customer penetration testing?
Algolia runs a vulnerability disclosure programme for its own platform, which covers Algolia’s own infrastructure rather than your integration. We confirm Algolia’s current terms for testing your own integration during scoping and test within them.
Do you test the Algolia Crawler or a plugin-based integration the same way?
A crawler configuration or a platform plugin such as an ecommerce integration still authenticates with an API key and still writes to an index, so the same questions about key scope, restrictions and what gets indexed apply. We agree during scoping which configuration screens, webhooks or scheduled jobs are in scope alongside any custom code.
How long does an Algolia integration review take?
A single application with a limited number of indices and key types sits in our 2-day single-integration scope, with a report typically landing around 5 working days after kickoff. More indices, multiple applications, or a mix of custom and secured keys across several environments moves into a larger scope with more testing days.
Are your testers CREST certified?
Yes. Every Algolia engagement is carried out by UK-based, CREST-certified testers, and your report and attestation letter are recognised by auditors and insurers accordingly.
20+ CREST-accredited testing services in one place
Web, mobile, API, cloud, AI, infrastructure, red team. Pick the test that fits your environment.
Get a fixed price for your Algolia integration
An Algolia key can carry Admin-level access straight into a browser without anyone noticing. We test what each key can reach, how tenant filters are enforced, and what should never be retrievable. CREST-certified testers, fixed price from £2,620 for a 2-day single-integration scope, quoted within 24 hours.



