mirror of
https://github.com/thiloho/archtika.git
synced 2025-11-22 02:41:35 +01:00
Harden systemd services, restrict file permissions further, add username blocklist and prevent more vulnerabilities
This commit is contained in:
@@ -32,10 +32,15 @@ ALTER DEFAULT PRIVILEGES REVOKE EXECUTE ON FUNCTIONS FROM PUBLIC;
|
||||
CREATE FUNCTION internal.generate_slug (TEXT)
|
||||
RETURNS TEXT
|
||||
AS $$
|
||||
SELECT
|
||||
REGEXP_REPLACE(REGEXP_REPLACE(REGEXP_REPLACE(REGEXP_REPLACE(LOWER(TRIM(REGEXP_REPLACE(unaccent ($1), '\s+', '-', 'g'))), '[^\w-]', '', 'g'), '-+', '-', 'g'), '^-+', '', 'g'), '-+$', '', 'g')
|
||||
BEGIN
|
||||
IF $1 ~ '[/\\.]' THEN
|
||||
RAISE invalid_parameter_value
|
||||
USING message = 'Title cannot contain "/", "\" or "."';
|
||||
END IF;
|
||||
RETURN REGEXP_REPLACE(REGEXP_REPLACE(REGEXP_REPLACE(REGEXP_REPLACE(LOWER(TRIM(REGEXP_REPLACE(unaccent ($1), '\s+', '-', 'g'))), '[^\w-]', '', 'g'), '-+', '-', 'g'), '^-+', '', 'g'), '-+$', '', 'g');
|
||||
END;
|
||||
$$
|
||||
LANGUAGE sql
|
||||
LANGUAGE plpgsql
|
||||
IMMUTABLE;
|
||||
|
||||
GRANT EXECUTE ON FUNCTION internal.generate_slug TO authenticated_user;
|
||||
|
||||
@@ -120,7 +120,7 @@ AS $$
|
||||
DECLARE
|
||||
_role NAME;
|
||||
_user_id UUID;
|
||||
_exp INT := EXTRACT(EPOCH FROM CLOCK_TIMESTAMP())::INT + 86400;
|
||||
_exp INT := EXTRACT(EPOCH FROM CLOCK_TIMESTAMP())::INT + 43200;
|
||||
BEGIN
|
||||
SELECT
|
||||
internal.user_role (login.username, login.pass) INTO _role;
|
||||
|
||||
@@ -46,12 +46,12 @@ LANGUAGE plpgsql
|
||||
SECURITY DEFINER;
|
||||
|
||||
CREATE TRIGGER _cleanup_filesystem_website
|
||||
BEFORE UPDATE OR DELETE ON internal.website
|
||||
BEFORE UPDATE OF title OR DELETE ON internal.website
|
||||
FOR EACH ROW
|
||||
EXECUTE FUNCTION internal.cleanup_filesystem ();
|
||||
|
||||
CREATE TRIGGER _cleanup_filesystem_article
|
||||
BEFORE UPDATE OR DELETE ON internal.article
|
||||
BEFORE UPDATE OF title OR DELETE ON internal.article
|
||||
FOR EACH ROW
|
||||
EXECUTE FUNCTION internal.cleanup_filesystem ();
|
||||
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
-- migrate:up
|
||||
ALTER TABLE internal.user
|
||||
ADD CONSTRAINT username_not_blocked CHECK (LOWER(username) NOT IN ('admin', 'administrator', 'api', 'auth', 'blog', 'cdn', 'docs', 'help', 'login', 'logout', 'profile', 'register', 'settings', 'setup', 'signin', 'signup', 'support', 'test', 'www'));
|
||||
|
||||
-- migrate:down
|
||||
ALTER TABLE internal.user
|
||||
DROP CONSTRAINT username_not_blocked;
|
||||
|
||||
Reference in New Issue
Block a user