You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: PRIVACY.md
+4-2Lines changed: 4 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -23,15 +23,17 @@ When a user submits feedback through the BugDrop widget, the following data is c
23
23
24
24
## Where Data Goes
25
25
26
-
All submitted feedback is sent to the **GitHub API** and created as a GitHub Issue in the repository configured by the site owner. Screenshots are stored in the repository's `.bugdrop/` directory. The BugDrop Cloudflare Worker acts only as a pass-through to authenticate with GitHub — it does not store any submitted data.
26
+
All submitted feedback is sent to the **GitHub API** and created as a GitHub Issue in the repository configured by the site owner. Screenshots are stored in the repository's `.bugdrop/` directory on the `bugdrop-screenshots` branch. The BugDrop Cloudflare Worker acts only as a pass-through to authenticate with GitHub — it does not store any submitted data.
27
+
28
+
Feedback and screenshots are unauthenticated user-generated content. The hosted service applies rate limits, size limits, and PNG screenshot validation, but it does not provide email-grade spam or malware filtering.
27
29
28
30
## Data Processing
29
31
30
32
BugDrop runs on **Cloudflare Workers**. Requests are processed in-memory and are not logged or persisted by the BugDrop service. Cloudflare's standard infrastructure policies apply to network-level processing.
31
33
32
34
## Self-Hosting
33
35
34
-
BugDrop is fully open source and self-hostable. If you run your own instance, you control all data processing. See [SELF_HOSTING.md](./SELF_HOSTING.md) for instructions.
36
+
BugDrop is fully open source and self-hostable. If you run your own instance, you control all data processing and can add your own WAF, CAPTCHA, logging, retention, and content filtering controls. See [SELF_HOSTING.md](./SELF_HOSTING.md) for instructions.
Copy file name to clipboardExpand all lines: README.md
+2Lines changed: 2 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -32,6 +32,8 @@ That's it! Users can now click the bug button to submit feedback as GitHub Issue
32
32
33
33
> **Branch protection:** BugDrop works with repos that have branch protection rules (required PRs, merge queues). Screenshots are stored on a dedicated `bugdrop-screenshots` branch that is auto-created on first use — no manual setup needed.
34
34
35
+
> **Security note:** BugDrop is not a spam or malware filtering service. Treat feedback and screenshots as unauthenticated user-generated content. Exclude `bugdrop-screenshots` from CI/deploy workflows, and self-host behind your own WAF/CAPTCHA/content controls for stricter environments.
Copy file name to clipboardExpand all lines: TERMS.md
+3Lines changed: 3 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -12,6 +12,7 @@ BugDrop is a free, open-source feedback widget that creates GitHub Issues with s
12
12
- You may use the hosted widget on any website where you have authority to add scripts.
13
13
- You must have the GitHub App installed on a repository you own or administer.
14
14
- Do not use the service to submit spam, abusive content, or illegal material via GitHub Issues.
15
+
- The hosted service is not a spam, malware, or content moderation service. Feedback submissions are unauthenticated user-generated content.
15
16
16
17
## No Warranty
17
18
@@ -21,6 +22,8 @@ THE SERVICE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED
21
22
22
23
The service enforces rate limits (10 requests per IP per 15 minutes, 50 per repository per hour) to prevent abuse and protect GitHub API quotas. Exceeding these limits will result in temporary throttling.
23
24
25
+
For stricter security or compliance requirements, self-host BugDrop and apply your own WAF, CAPTCHA, logging, retention, and content filtering controls.
26
+
24
27
## GitHub
25
28
26
29
BugDrop interacts with GitHub on your behalf via the GitHub App. Your use of GitHub is subject to [GitHub's Terms of Service](https://docs.github.com/en/site-policy/github-terms/github-terms-of-service). BugDrop requests only the minimum permissions needed: Issues (read/write) and Contents (read/write) on repositories where you install it.
Copy file name to clipboardExpand all lines: docs/website/installation.mdx
+2Lines changed: 2 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -104,6 +104,8 @@ If you have a strict CSP, make sure both the BugDrop worker domain and jsDelivr
104
104
105
105
BugDrop stores screenshots in a dedicated branch called `bugdrop-screenshots` in your repository. This branch is created automatically when the first screenshot is uploaded.
106
106
107
+
Treat this branch as user-generated content storage. Exclude `bugdrop-screenshots` from CI/deploy workflows and keep privileged workflows limited to `main` or other trusted branches.
108
+
107
109
**If you use branch protection rules**, make sure the BugDrop GitHub App has permission to push to the `bugdrop-screenshots` branch. You can do this by either:
108
110
109
111
1.**Excluding the branch from protection rules** -- Add `bugdrop-screenshots` to the exclusion list in your branch protection settings
Copy file name to clipboardExpand all lines: docs/website/security.mdx
+14-4Lines changed: 14 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -11,9 +11,10 @@ The BugDrop GitHub App requests the minimum permissions necessary to function:
11
11
|**Issues**| Read & Write | Create bug reports, feature requests, and questions as GitHub Issues |
12
12
|**Contents**| Read & Write | Store screenshots in the repository on the `bugdrop-screenshots` branch |
13
13
14
+
GitHub App `Contents` permissions are repository-scoped, not branch-scoped. BugDrop's implementation writes screenshots only to `.bugdrop/screenshots/` on the dedicated `bugdrop-screenshots` branch, but GitHub does not provide a narrower branch-only permission for this API.
15
+
14
16
BugDrop does **not** request access to:
15
17
16
-
- Your source code (contents access is limited to the `bugdrop-screenshots` branch)
17
18
- Pull requests
18
19
- Actions or workflows
19
20
- Secrets or environment variables
@@ -48,6 +49,8 @@ Screenshots are stored as image files in a `.bugdrop/` directory on a dedicated
48
49
49
50
The screenshot branch is created automatically when the first screenshot is uploaded. No manual setup is required.
50
51
52
+
Treat screenshots as unauthenticated user-generated content. The hosted service enforces rate limits, size limits, and PNG payload validation, but it is not a spam or malware filtering product.
53
+
51
54
### Screenshot Format
52
55
53
56
Screenshots are captured client-side using [html2canvas](https://html2canvas.hertzen.com/), which renders the current page to a canvas element in the user's browser. The canvas is then converted to a PNG image and uploaded. This means:
@@ -56,6 +59,8 @@ Screenshots are captured client-side using [html2canvas](https://html2canvas.her
56
59
- No server-side rendering or page access is required
57
60
- The screenshot is generated entirely in the user's browser before being sent to the API
58
61
62
+
Because clients are untrusted, the API validates screenshot uploads server-side before storing them. BugDrop currently accepts PNG data URLs only and rejects SVG, malformed base64, oversized payloads, and data that does not have a PNG file signature.
63
+
59
64
## Privacy
60
65
61
66
BugDrop is built with a privacy-first approach:
@@ -132,8 +137,11 @@ If these limits are too restrictive for your use case, consider [self-hosting](/
132
137
133
138
1.**Review app permissions** -- Periodically check the BugDrop GitHub App's permissions in your GitHub settings
134
139
2.**Monitor the screenshots branch** -- Occasionally review the `bugdrop-screenshots` branch for unexpected content
135
-
3.**Use branch protection** -- Keep your main branch protected. BugDrop only needs write access to the `bugdrop-screenshots` branch
136
-
4.**Set up CSP** -- If you use a Content Security Policy, explicitly whitelist the required domains rather than using broad wildcards
140
+
3.**Exclude screenshot storage from CI** -- Do not run privileged CI/deploy workflows on `bugdrop-screenshots`; treat it as user-generated content storage, not application source
141
+
4.**Use branch protection** -- Keep your main branch protected and limit deploy/build workflows to `main` or other trusted branches
142
+
5.**Set up CSP** -- If you use a Content Security Policy, explicitly whitelist the required domains rather than using broad wildcards
143
+
144
+
The hosted service is intended for lightweight feedback collection. If your site is public, high-traffic, compliance-sensitive, or exposed to adversarial submissions, self-host BugDrop and place it behind your own WAF, CAPTCHA, logging, retention, and content filtering controls.
137
145
138
146
### For Self-Hosters
139
147
@@ -142,7 +150,9 @@ If you run your own instance of BugDrop:
142
150
1.**Rotate your GitHub App credentials** regularly
143
151
2.**Set appropriate rate limits** for your expected traffic
144
152
3.**Monitor your Cloudflare Worker logs** for unusual activity
145
-
4.**Keep your instance updated** with the latest version
153
+
4.**Add edge protections** such as WAF rules, CAPTCHA, bot detection, and allowlists as needed
154
+
5.**Define retention/cleanup** for the `bugdrop-screenshots` branch
155
+
6.**Keep your instance updated** with the latest version
0 commit comments