19 lines
815 B
SQL
19 lines
815 B
SQL
-- Migration 008: CSRF Tokens
|
|
-- Creates table for storing CSRF tokens for protection against cross-site request forgery
|
|
|
|
CREATE TABLE IF NOT EXISTS csrf_tokens (
|
|
id SERIAL PRIMARY KEY,
|
|
user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
|
token_hash VARCHAR(255) NOT NULL,
|
|
expires_at TIMESTAMP WITH TIME ZONE NOT NULL,
|
|
client_ip VARCHAR(45),
|
|
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
|
|
);
|
|
|
|
-- Index for fast lookup by user_id and expiration
|
|
CREATE INDEX IF NOT EXISTS idx_csrf_tokens_user_id ON csrf_tokens(user_id);
|
|
CREATE INDEX IF NOT EXISTS idx_csrf_tokens_expires_at ON csrf_tokens(expires_at);
|
|
|
|
-- Cleanup old tokens automatically (run periodically via cron or app)
|
|
COMMENT ON TABLE csrf_tokens IS 'Stores hashed CSRF tokens for protecting state-changing operations';
|