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
> Since **v6**, encryption and decryption happen **entirely in the browser** (Web Crypto, AES-256-GCM). The server never sees the plaintext nor the AES key, in any phase. **Read before upgrading:**
10
+
>
10
11
> -**Secrets created with previous versions become unreadable** (the on-disk format and the key scheme changed). Since secrets are ephemeral (max 30 days), do a clean cutover: empty the `data/` folder on deploy, or wait for old secrets to expire.
11
12
> -**Creating and reading now require JavaScript and a secure context.** On clearnet you need **HTTPS**; on a `.onion` hidden service it works. On plain-HTTP clearnet, encryption is disabled with an explicit on-screen message — never a silent downgrade.
12
13
> -**OpenSSL is no longer required on the server** for secret encryption (it moved to the browser); it is only used by the optional email notifications over SSL/STARTTLS.
@@ -27,7 +28,7 @@ SayNoMore is a simple One Time Secret service for sharing passwords or sensitive
27
28
- 🧅 Tor support: links generated on `.onion` hidden services automatically use `http://` instead of `https://`
28
29
- 💻 No database required, just the file system
29
30
30
-
## 🚀 How it works (v6, end-to-end)
31
+
## 🚀 How it works
31
32
32
33
**Creating a secret**
33
34
@@ -119,19 +120,19 @@ information for an attacker.
119
120
120
121
The main parameters are constants at the top of `index.php`, `view.php`, and `cleanup.php`:
121
122
122
-
| Constant | File | Default | Description |
123
-
|---|---|---|---|
124
-
|`DEFAULT_TTL_DAYS`| index.php | 7 | Default validity in days for new secrets |
125
-
|`MIN_TTL_DAYS`| index.php | 1 | Minimum TTL selectable by the user |
126
-
|`MAX_TTL_DAYS`| index.php | 30 | Maximum TTL selectable by the user |
|`MAX_CT_B64_BYTES`| index.php | 98304 (96 KB) | Hard cap on the base64 ciphertext accepted by the server (bounds memory before decoding) |
129
-
|`GCM_IV_LEN`| index.php | 12 | Expected GCM IV length in bytes (validated server-side) |
130
-
|`MAX_ATTEMPTS`| view.php | 5 | Maximum number of password attempts before destruction |
131
-
|`CLEANUP_ENABLED`| index.php / view.php | true | Master switch for in-request cleanup. Set to `false` to disable it entirely (useful when you run `cleanup.php` via cron) |
132
-
|`CLEANUP_PROB_PCT`| index.php / view.php | 50 | Probability (%) of running a global cleanup on each request (ignored when `CLEANUP_ENABLED` is `false`) |
133
-
|`TMP_ORPHAN_TTL`| all | 3600 | Orphan temporary files (failed writes) older than X seconds are removed |
134
-
|`LEGACY_TTL_SEC`| all | 7 days | Fallback TTL for secrets created with previous versions (`created` field) |
|`MAX_CT_B64_BYTES`| index.php | 98304 (96 KB) | Hard cap on the base64 ciphertext accepted by the server (bounds memory before decoding)|
130
+
|`GCM_IV_LEN`| index.php | 12 | Expected GCM IV length in bytes (validated server-side)|
131
+
|`MAX_ATTEMPTS`| view.php | 5 | Maximum number of password attempts before destruction|
132
+
|`CLEANUP_ENABLED`| index.php / view.php | true| Master switch for in-request cleanup. Set to `false` to disable it entirely (useful when you run `cleanup.php` via cron) |
133
+
|`CLEANUP_PROB_PCT`| index.php / view.php | 50 | Probability (%) of running a global cleanup on each request (ignored when `CLEANUP_ENABLED` is `false`)|
134
+
|`TMP_ORPHAN_TTL`| all | 3600 | Orphan temporary files (failed writes) older than X seconds are removed|
135
+
|`LEGACY_TTL_SEC`| all | 7 days | Fallback TTL for secrets created with previous versions (`created` field)|
135
136
136
137
## 🌍 Internationalization
137
138
@@ -171,11 +172,11 @@ return [
171
172
172
173
Common SMTP profiles:
173
174
174
-
| Mode | Port |`secure`|
175
-
|---|---|---|
176
-
| SSL implicit | 465 |`'ssl'`|
177
-
| STARTTLS (recommended) | 587 |`'tls'`|
178
-
| Plaintext (internal only) | 25 |`''`|
175
+
| Mode | Port |`secure`|
176
+
|------------------------- |---- |-------- |
177
+
| SSL implicit | 465 |`'ssl'`|
178
+
| STARTTLS (recommended) | 587 |`'tls'`|
179
+
| Plaintext (internal only) | 25 |`''`|
179
180
180
181
### How it works
181
182
@@ -225,11 +226,13 @@ Cons: if traffic is very low, expired files may stay on disk longer than expecte
225
226
The `cleanup.php` script is a standalone CLI job that guarantees cleanup. It is safe to run in parallel with web requests thanks to non-blocking locking (in-use files are skipped).
0 commit comments