Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .well-known/security.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
Contact: mailto:security@databuddy.cc
Expires: 2027-03-21T00:00:00.000Z
Preferred-Languages: en
Policy: https://github.com/databuddy-analytics/Databuddy/blob/main/SECURITY.md
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Policy URL resolves to the GitHub HTML viewer, not a raw/web page

The Policy field currently links to the GitHub blob viewer. While this is technically accessible to humans, security automation tools and some validators expect either a raw file URL or a proper web page. Consider pointing to the raw content URL or hosting the policy on your own domain:

Suggested change
Policy: https://github.com/databuddy-analytics/Databuddy/blob/main/SECURITY.md
Policy: https://raw.githubusercontent.com/databuddy-analytics/Databuddy/main/SECURITY.md

(Or better, a rendered page at https://databuddy.cc/security if one exists.)

Canonical: https://github.com/databuddy-analytics/Databuddy/blob/main/.well-known/security.txt
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Canonical URL points to GitHub, not the actual served location

RFC 9116 §2.5 requires the Canonical field to contain the HTTPS URI on the web host where the file is served — it is used by validators and security researchers to confirm they've reached the authoritative copy. Pointing it at github.com/…/blob/main/… (the GitHub file-browser view, which is neither the served domain nor a raw file) defeats this purpose entirely.

The value should be the URL at which your server will actually respond to requests, e.g.:

Suggested change
Canonical: https://github.com/databuddy-analytics/Databuddy/blob/main/.well-known/security.txt
Canonical: https://databuddy.cc/.well-known/security.txt

Replace databuddy.cc with the correct primary domain if it differs.

Comment on lines +1 to +5
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 File placed at repo root — not copied into any web app's public/ directory

For this file to actually be reachable at https://<domain>/.well-known/security.txt, it must be placed where the web server (or framework) will serve it as a static asset. All the apps in this monorepo that serve HTTP use their own public/ directory (e.g., apps/dashboard/public/, apps/docs/public/). Placing the file only at the repository root means it will never be picked up by any of those apps.

Wherever the main databuddy.cc domain resolves (likely apps/dashboard or apps/docs), the file should be placed at:

apps/<main-app>/public/.well-known/security.txt

Without this, the RFC 9116 endpoint simply won't exist on the live domain, even though the repository file looks correct.