Skip to content

Security: ursine-code/static-deploy-kit

Security

SECURITY.md

Security Policy

Supported Versions

Version Supported
latest Yes

Secrets Management

Storage

All secrets must be stored in GitHub repository settings under Settings > Secrets and variables > Actions. Never commit secrets to the repository.

Required Secrets

Secret Purpose Scope
SFTP_HOST Deployment server hostname Deployment
SFTP_USERNAME SFTP authentication Deployment
SFTP_PASSWORD SFTP authentication Deployment
DEPLOY_BASE_PATH Remote deployment directory Deployment
PRODUCTION_DOMAIN Production URL generation Deployment
SANDBOX_DOMAIN Sandbox URL generation (optional) Deployment

Application Secrets

Secret Purpose
NEXT_PUBLIC_EMAILJS_* Client-side email service (public)
EMAILJS_ADMIN_* Server-side email service (private)
ADMIN_EMAIL Admin notification recipient

Automatic Secrets

Secret Purpose
GITHUB_TOKEN Auto-provided by GitHub Actions for API operations

Secret Handling in Workflows

Exposure Prevention

  • Secrets are masked in logs by GitHub Actions
  • Debug mode ([DEBUG_DEPLOYMENT_INFORMATION]) does not expose secret values
  • SFTP credentials are passed directly to action inputs, never echoed

Least Privilege

  • GITHUB_TOKEN permissions are scoped per-workflow
  • SFTP credentials should use a dedicated deployment user with write access limited to DEPLOY_BASE_PATH

Build-time Variables

Environment variables prefixed with NEXT_PUBLIC_ are embedded in the client bundle and publicly visible. Treat these as non-sensitive configuration only.

Best Practices

  1. Rotate credentials — Update SFTP passwords periodically
  2. Use deploy keys — Prefer SSH keys over passwords when possible
  3. Limit server access — Restrict SFTP user to deployment directory only
  4. Audit access — Review repository collaborators with secrets access
  5. Environment separation — Use different credentials for staging vs production

Vulnerability Reporting

Report security vulnerabilities privately via GitHub's security advisory feature:

  1. Navigate to Security > Advisories
  2. Click New draft security advisory
  3. Provide details and reproduction steps

Do not open public issues for security vulnerabilities.

Deployment Security

SFTP

  • Connections use SSH (port 22) with password or key authentication
  • Existing deployments are backed up before overwrite
  • Deployment verification checks for expected files post-deploy

GitHub Releases

  • Tags are signed with GitHub's verified badge when using GITHUB_TOKEN
  • Release assets are immutable once published

Audit Checklist

  • Secrets stored in repository settings, not in code
  • SFTP user has minimal required permissions
  • NEXT_PUBLIC_* variables contain no sensitive data
  • Repository access limited to trusted collaborators
  • Branch protection enabled for main

There aren’t any published security advisories