WeSearch
Hub / Security
SECURITY

Security at WeSearch.

What we do to protect the platform and the small set of data we hold, and how to disclose vulnerabilities to us responsibly.

This page is what we do for security at WeSearch and how to report vulnerabilities. The honest baseline: WeSearch is a single-droplet single-developer project, and we don't claim enterprise-grade security posture. We do claim a small attack surface (we don't have data worth a major attack on), aggressive minimization, and a clear disclosure path.

What we hold

The set of data WeSearch can lose is intentionally small. We do not hold:

We do hold:

How identity is protected

The local API key is sent over HTTPS in the Authorization header when you authenticate. The server hashes it on receipt, compares it with the stored SHA-256 value, and never persists the plaintext.

This means: even if our database were exposed, an attacker would have hashed keys and would have to brute-force each one to find the originals. The keys are 32 bytes of crypto-random hex, so brute-forcing is computationally prohibitive.

Application-layer hardening

Infrastructure-layer hardening

What's deliberately NOT in our stack

Vulnerability disclosure

If you find a vulnerability:

  1. Email [email protected] (or /support with "SECURITY" in the subject).
  2. Include reproduction steps, the affected URL, and the impact you've assessed.
  3. Don't publicly disclose for at least 30 days while we work on a fix.
  4. We'll acknowledge within 24 hours, fix within a reasonable window for the severity, and credit you in this page's changelog if you want.

We don't currently run a paid bug-bounty program — we're a donation-funded project and the budget isn't there. We're happy to credit researchers and link to their disclosure write-ups after the fix lands.

Incidents

None to date. If a security incident occurs that affects user data, we'll publish a post-mortem on this page and notify any affected users via the email address they optionally provided for recovery.

Threat model in plain English

Our security work is shaped by what we hold and what an attacker might want. Since we don't store payment data, real names, addresses, phone numbers, or behavioral profiles, the value of compromising WeSearch is low — there's no card-data trove, no identity-theft surface, no dossier worth selling. The realistic attacker scenarios are: (a) someone who wants to deface or take the site offline (mitigated by infrastructure hardening, backups, and a static-fallback strategy); (b) someone who wants to abuse the API for bulk scraping or amplification (mitigated by rate limiting, fail2ban, and Cloudflare-tier filtering); (c) someone who wants to inject content into comment threads (mitigated by escaping, validation, and active moderation); (d) someone who wants to de-anonymize a specific commenter (mitigated by the hashed-key model, no email-by-default, and access-log rotation).

We don't pretend to be unhackable. We do design for graceful degradation — if a particular subsystem is compromised, the blast radius is small, and the data that an attacker could extract is intentionally less valuable than what they'd need to justify the effort.

What you can do as a reader

Frequently asked

Do you have a SOC 2 / ISO 27001 attestation?

No. We're a small donation-funded project; formal attestations are expensive and not warranted by our scope or data.

Can I see the source code?

The project's source is publicly readable. Contact via support if you'd like a security review or want to contribute hardening patches.

What if my key gets compromised?

Reset your local key in Settings; the old key's hash and any associated comments stay public under the old handle, but the new key creates a new identity. There is no "account recovery" because there is no account in the traditional sense.

Do you log IP addresses?

Yes—server access logs include IP, user agent, and path and rotate within 30 days. We do not deliberately join them into a reader profile, but timestamps and request metadata can sometimes be correlatable.