tim
1468cf7138
Require a captcha for visitor submissions and for login.
...
Without the form field, the check was skipped. A solved captcha lasts
30 minutes in the session.
2026-09-25 21:54:14 +02:00
tim
c5ce7661f5
Limit failed logins.
...
At most 5 per username and address, 20 per address and 50 per username
in 15 minutes.
2026-09-25 21:46:38 +02:00
tim
d8c05e82b1
Make the session cookie last until the browser closes.
...
The lifetime was a timestamp, so the cookie expired in about 56 years.
2026-09-25 21:42:56 +02:00
tim
ee20dc6eda
Store persistent-login keys as SHA-256 hashes.
...
Each device now has its own row. Editors must log in again once after
deploying.
2026-09-25 21:42:34 +02:00
tim
dfa6d71198
Hash editor passwords with Argon2id and upgrade old hashes.
...
Old hashes are replaced at login. Widen the column before deploying:
ALTER TABLE editors MODIFY password VARCHAR(255) NOT NULL;
2026-09-25 21:41:36 +02:00
tim
15ad07423a
Match usernames and session keys with = instead of LIKE.
...
A username of "%" matched the first editor.
2026-09-25 21:39:25 +02:00
tim
36c7fe97c5
Give editors a new session id when they log in.
2026-09-25 21:39:06 +02:00
tim
41c46a43c6
Add CSRF protection to every form that changes data.
...
The logout link carries the token too, and the cookies get SameSite=Lax.
2026-09-25 21:38:22 +02:00
tim
f6bdf10228
Escape request and database values in forms and links.
...
Add form_value() in html.lib.php.
2026-09-25 21:36:27 +02:00
tim
c85f54116c
Use bound parameters for every query that takes user data.
...
The queue image query took $id without quotes or a check, which allowed
SQL injection.
2026-09-25 21:29:09 +02:00
tim
00829a0c0d
Port the code to PHP 8.5.
...
Replace the short open tags and the removed functions (mcrypt, mysql_error,
salt-less crypt). Decode the reCAPTCHA reply as JSON, turn off mysqli
exceptions, drop stripslashes(), and default missing input values.
Fix the misplaced continue in prune_images().
2026-09-25 21:18:58 +02:00
tim
3b8f5e6599
Fix some layout problems, and caching issues.
2015-11-22 01:43:29 +02:00
tim
a00c1b4c9d
Fix some issues with secure cookies being overwritten by insecure site.
...
Now, /publish/{edit,addeditor,login,logout} must be accessed via
https://; other pages should not be (but can be).
2014-04-24 09:56:25 +02:00
tim
7fc40728f5
Initial commit.
2013-05-17 23:38:44 +02:00