Security: OAuth credentials stored in plaintext JSON #112

Closed
opened 2026-06-06 11:50:08 +00:00 by jmiller · 1 comment
Owner

Audit Finding

Severity: Medium

Issue:
OAuth access tokens, refresh tokens, API keys, and secrets are stored as plaintext JSON in the credentials column. CLAUDE.md states credentials should use Joomla's encrypted params, but the implementation uses json_encode() without encryption.

Fix: Encrypt credentials JSON before storing using sodium_crypto_secretbox() and decrypt on read.

Files: OAuthHelper.php, ServiceModel.php

## Audit Finding **Severity:** Medium **Issue:** OAuth access tokens, refresh tokens, API keys, and secrets are stored as plaintext JSON in the `credentials` column. CLAUDE.md states credentials should use Joomla's encrypted params, but the implementation uses `json_encode()` without encryption. **Fix:** Encrypt credentials JSON before storing using `sodium_crypto_secretbox()` and decrypt on read. **Files:** `OAuthHelper.php`, `ServiceModel.php`
Author
Owner

Branch created: feature/112-security-oauth-credentials-stored-in-pla

git fetch origin
git checkout feature/112-security-oauth-credentials-stored-in-pla
Branch created: [`feature/112-security-oauth-credentials-stored-in-pla`](https://git.mokoconsulting.tech/MokoConsulting/MokoJoomCross/src/branch/feature/112-security-oauth-credentials-stored-in-pla) ```bash git fetch origin git checkout feature/112-security-oauth-credentials-stored-in-pla ```
Sign in to join this conversation.