Skip to content
DEFLECTO
Privacy Policy

What the proxy sees, and what happens to it.

DEFLECTO is a reverse proxy. Traffic to a protected site reaches us before it reaches the origin, so processing request data is not an analytics choice we made, it is the mechanism by which filtering happens. This document says exactly what that means.

Last updated
Status
Draft
Applies to
DEFLECTO WAF and reverse proxy
Draft, company being formed

DEFLECTO LLC is in the process of being incorporated and is not registered yet, so there is not currently a legal person able to enter into this agreement. Registration is underway and expected shortly. Until it completes, this document is published for comment and is not binding on anyone, it has not been reviewed by counsel, and every value shown in a red box is a fact that will be filled in once the company exists.

In short: to decide whether a request is an attack we have to look at the request. We read connection metadata and headers on every request and inspect bodies in memory while a verdict is being formed. We keep a bounded window of refused-request records so operators can see what happened, we keep aggregate counters permanently, and we keep nothing else. Traffic content is never sold, shared for advertising, or used to train models.

1Who this policy is for, and who is responsible

This policy is published by DEFLECTO LLC, registered at [[REGISTERED_ADDRESS]] (referred to here as DEFLECTO, we, us). It covers the DEFLECTO web application firewall and reverse proxy, the customer control panel, and this website.

There are two distinct relationships in this product, and the data protection roles are different in each. Reading the rest of this document without that distinction will give you the wrong answer.

1.1Traffic to a customer's site: customer is controller, we are processor

When a visitor loads a website protected by DEFLECTO, the personal data in that request (chiefly the visitor's IP address) belongs to the relationship between the visitor and our customer. Our customer decides that the site exists, decides that it should be protected, and decides the security posture applied to it. Our customer is therefore the controller, and we act as processor on that customer's documented instructions, which are expressed through the settings they configure and the contract they sign with us.

If you are a visitor to a site behind DEFLECTO and you want your data erased or explained, the operator of that site is the party who has to answer you. We will help them do it, but we cannot lawfully act on their data without their instruction.

1.2A customer's own account: we are controller

The account itself is ours to answer for. Company and contact details, login credentials, billing records, support correspondence, and control panel session data are processed by us as controller, because we decide what to collect and why.

1.3Resellers

Where DEFLECTO is sold through a reseller, the reseller is controller for its own end-customer records and we remain processor for the traffic those end customers put through the platform. The chain of instruction runs platform to reseller to tenant, and each link is covered by a written agreement.

2What passes through the proxy

A filtering decision is a function of the request. There is no version of this product that protects a site without reading what arrives at it. The following is processed on every request:

Source IP address
The address the connection came from, or the client address supplied by a trusted upstream proxy where one is configured. Rate limits, ban ladders, allow lists and the proof-of-work client binding are all keyed on it. Without it there is no way to distinguish one client from a million.
Request line and headers
Method, path, query string, host, user agent, referer, cookie names, content type and length, and the remaining headers. Rules match on these, so they are read in full.
TLS characteristics
Negotiated version, cipher suite and handshake fingerprint. A client that presents a browser user agent over a handshake no browser produces is a strong and cheap signal, which is why it is collected.
Timing and response
Timestamp, the verdict reached (allow, log, challenge, block, drop), the rule or ladder that produced it, upstream status code, byte counts and latency.
Request body
Inspected in memory when body rules apply to the route. See clause 2.1.

2.1Bodies are inspected, not retained

Where a rule targets the body of a request, that body is buffered in memory only for as long as the verdict takes to form, matched against the rule set, and then either relayed to the origin or discarded with the connection. It is not written to disk, not copied into the event record, and not available to us afterwards. A log line about a body rule firing records which rule matched, never the content that matched it.

The practical consequence is that a password, card number or personal message inside a request body is not something we hold. It is something that passed through us.

2.2What is written down

Requests that are refused or challenged generate an event record containing the source address, timestamp, host, method, path, the matching rule and the action taken. Requests that are allowed are reflected in aggregate counters and, where the customer has enabled it, in their own access logs on their own origin, which we neither store nor read.

3Proof of work and the clearance cookie

When a client looks automated but is not clearly hostile, DEFLECTO serves a proof-of-work interstitial instead of blocking it. The client computes a hash puzzle in the browser, posts the solution back, and receives a clearance cookie which stops it being asked again.

3.1What the cookie contains

The cookie is named __waf_clr and its value is a signed token, not a record locator. It carries:

  • A version prefix and a key identifier, so the signing key can be rotated without logging every visitor out at once.
  • An issued timestamp and an expiry timestamp.
  • A 16 byte client binding, which is a truncated SHA-256 of the source address and user agent mixed with a server-side secret. The address itself is not recoverable from it, and the secret means the value cannot be precomputed for a target client offline.
  • A message authentication tag over the above, which is what makes the token unforgeable.

There is no account identifier, no visitor identifier, no session reference and no pointer to any record. The token is the whole of the state. Nothing on our side is looked up when it is presented, it is simply verified.

3.2Why it is strictly necessary rather than tracking

A tracking cookie exists to recognise the same person across visits, sites or time. This one cannot do any of those things. It is bound to one address and user agent pair, it expires after one hour by default, it is signed under a secret that differs between deployments so the same browser gets an unrelated value at a different customer, and it holds nothing that survives its own expiry.

It is set because the alternative is showing the challenge on every single request, which would make protected sites unusable. That places it within the strictly necessary exemption under the ePrivacy rules, so no consent banner is required for it. It is set HttpOnly and SameSite=Lax, and Secure wherever the site is served over TLS, so page scripts cannot read it and it is not sent to third parties.

3.3The challenge token

The puzzle handed to the client is itself a signed token with a five minute lifetime, carrying the difficulty and the same client binding. It is never stored. A solved puzzle is recorded only as a counter increment, so that a client minting clearances far faster than a human could is priced in extra difficulty rather than blocked outright.

4Account data we hold as controller

Identity and contact
Name, business name, email address, and the domains you ask us to protect.
Authentication
A password hash and control panel session records. We never hold a password in a form we can read.
Billing
Plan, billing cycle, invoices and payment status. Card details are handled by our payment processor and never reach our systems.
Support
Tickets and correspondence, including anything you attach to them.
Operational
Configuration history, rule changes, allow list entries and administrative actions, kept so an unexpected change can be traced to the person who made it.

5Lawful bases

Where the GDPR or an equivalent regime applies, we rely on the following. Where we act as processor, the lawful basis is the controller's to establish, and these are the bases we expect them to rely on.

Legitimate interests
Article 6(1)(f), for filtering traffic, detecting and mitigating attacks, and keeping the network available. Recital 49 of the GDPR names network and information security as a legitimate interest in terms, and the processing is limited to what a filtering decision needs.
Contract
Article 6(1)(b), for providing the service, operating your account, metering usage and invoicing you.
Legal obligation
Article 6(1)(c), for tax and accounting records, and for responding to lawful requests from an authority with jurisdiction over us.
Consent
Only where you give it, for example if you subscribe to product announcements. Withdrawable at any time, and never required to use the service.

6Retention

6.1Per-request event records

Attack and refusal events are held in a bounded rolling window on each node. New events evict the oldest once the window is full, which on a default deployment is the most recent 250,000 events per node. An address that attacked you last month is gone. The window exists so an operator can investigate an incident that is happening or that just happened, not to build a history.

6.2Aggregate counters

Totals such as requests allowed, requests blocked, challenges issued and challenges solved persist for the life of the account. They carry no address and no request detail, and they are what your usage and your invoice are computed from.

6.3Account and billing records

Kept while the account is open and for the period after closure that tax and accounting law in [[JURISDICTION]] requires. Support correspondence is kept for two years from the last message so that a recurring problem can be recognised as recurring.

6.4Transient state

Rate limit counters, ban ladder entries, replay protection sets and buffered bodies live in memory and are discarded on their own schedule, measured in seconds to hours. None of it survives a restart of the node.

7Disclosure and sub-processors

We do not sell data, and we do not disclose traffic data to anyone except as set out here.

  • Infrastructure providers hosting the edge nodes and the control plane.
  • A payment processor, which receives billing identifiers and never receives traffic data.
  • Transactional email delivery, for account notices and alerts.
  • Where a reseller sold you the service, that reseller, limited to your account and usage data.
  • A competent authority, where we are compelled by a law that binds us. We will notify the affected customer unless we are prohibited from doing so.

A current list of sub-processors is available from support@deflecto.net. Customers acting as controllers are notified before a new sub-processor is engaged and may object on reasonable data protection grounds.

8International transfers

An anycast network answers a request from whichever node is nearest to the client, so traffic from a visitor in one country may be filtered by a node in another. Where that moves personal data outside the EEA or the UK, the transfer is covered by the European Commission's standard contractual clauses, the UK addendum where the UK GDPR applies, or an adequacy decision where one is in force for the destination.

Customers who need traffic confined to a specific region should raise it before onboarding. Region pinning changes which nodes will answer for your domains and cannot be applied retroactively.

9Security

  • TLS in transit for the control panel, the node API and the control plane, and encryption at rest for the databases holding account and event data.
  • Access to production is limited to named engineers, requires multi-factor authentication, and is logged.
  • Node credentials are single-use and rotatable, and the proof-of-work signing secret supports rotation with a previous key so that a rotation does not challenge every visitor at once.
  • Passwords are stored only as hashes with a modern key derivation function.
  • Changes to configuration are recorded with the actor who made them.

No control set makes a system impossible to breach. These are the measures we consider appropriate to the risk, and they are reviewed as the product changes.

10Personal data breach

Where we are controller and a breach is likely to result in a risk to people, we notify [[SUPERVISORY_AUTHORITY]] within 72 hours of becoming aware of it, and we notify the affected individuals directly where the risk is high.

Where we are processor, we notify the affected customer without undue delay after becoming aware, with what we know at the time rather than waiting for a complete picture, and we provide the information that customer needs to make its own notification.

11Your rights

Subject to the conditions in the applicable law, you have the right to access your data, to have it corrected, to have it erased, to restrict or object to processing, to receive it in a portable form, and to withdraw consent where consent was the basis. You also have the right to complain to a supervisory authority, which for us is [[SUPERVISORY_AUTHORITY]], and to the authority in your own country of residence.

11.1How to exercise them

Account holders should write to [[DPO_CONTACT]] or to support@deflecto.net. We answer within one month and will tell you if we need to extend that, and why.

Visitors to a site behind DEFLECTO should contact the operator of that site, for the reason given in clause 1.1. If you send the request to us we will forward it to the customer concerned and tell you that we have, but we cannot decide it ourselves.

11.2A limit worth stating plainly

We cannot always find you. An event record holds an IP address and no other identifier, so an erasure request for an address we may or may not have seen is not something we can meaningfully act on beyond confirming the retention window in clause 6.1, after which the record is gone regardless.

12What we do not do

  • We do not sell, rent or trade traffic data or account data.
  • We do not use traffic data for advertising, and there is no advertising technology in the product.
  • We do not use customer traffic, request bodies or support correspondence to train machine learning models.
  • We do not build cross-customer profiles of visitors. The proof-of-work binding is deliberately scoped so that the same browser is unrecognisable between two customers.
  • We do not retain request or response bodies.
  • We do not decrypt or inspect traffic for any purpose other than forming a filtering verdict and forwarding the request.

13Children

DEFLECTO is sold to businesses and is not directed at children. We do not knowingly collect account data from anyone under 16. Traffic data may of course originate from a visitor of any age, and it is processed on the basis in clause 5 and retained under clause 6 without regard to who sent it, because we have no way to know and no interest in finding out.

14Changes to this policy

Material changes are notified to account holders by email at least 30 days before they take effect, and the date at the top of this page is updated. Changes that only clarify existing wording take effect on publication.

15Cookies on this website

This section is about deflecto.net, the site you are reading. It is separate from clause 3, which covers the clearance cookie the proxy sets on a protected site. The two are unrelated, set by different systems, for different reasons.

15.1Nothing is set before you choose

We load no analytics and set no analytics cookie until you have actively accepted. A decision not yet made is treated as a refusal, so arriving, reading and leaving without touching the banner means nothing was loaded and nothing was stored.

15.2What it is for if you accept

Counting visits and seeing which pages are actually read, so we know which parts of this site are useful. It is not used to identify you, it is not combined with anything else we hold, it is not used for advertising, and it is not sold or shared.

15.3If you decline

No analytics script is requested and no analytics cookie is written. Declining is one click and sits beside accepting, at the same size, because a refusal that takes more effort than agreement is not a free choice.

15.4Remembering your answer

Your answer is kept in your browser under deflecto.consent.analytics, in local storage rather than in a cookie, so that remembering a refusal does not itself send anything to us with every request.

15.5Changing your mind

The cookie choice link in the footer reopens the question at any time. Withdrawing consent stops the analytics script loading and also deletes the cookies it had set, rather than merely declining to set new ones. Withdrawal takes effect immediately, though it cannot erase counts already recorded.

16Contact

Data protection contact: [[DPO_CONTACT]]. General support: support@deflecto.net. Sales and contracts: sales@deflecto.net. Registered entity and address: DEFLECTO LLC, [[REGISTERED_ADDRESS]].