Security

Security at GRCfy

Compliance data is among the most sensitive information an organisation holds. We've built GRCfy with security as a first principle — not an afterthought. This page explains exactly how we protect your data.

Last reviewed: May 2026  ·  Questions: security@grcfy.com
Encryption
AES-256 + TLS 1.2+
Audit Trail
Immutable & append-only
Access Control
11 roles, least privilege
Breach Notification
72-hour commitment
Contents
  1. 1. Our Security Commitment
  2. 2. Infrastructure & Hosting
  3. 3. Encryption
  4. 4. Authentication & Access Control
  5. 5. Data Isolation
  6. 6. Immutable Audit Trail
  7. 7. Evidence & File Security
  8. 8. Application Security
  9. 9. Vulnerability Management
  10. 10. Incident Response
  11. 11. Business Continuity
  12. 12. Employee & Vendor Security
  13. 13. Responsible Disclosure
Section 01

Our Security Commitment

GRCfy is built for organisations that manage sensitive compliance programmes — audits, findings, evidence, and regulatory submissions. The data your teams upload and generate is confidential, regulated, and in many cases subject to the DPDP Act 2023, GDPR, or other data protection laws.

We treat that responsibility seriously. Security decisions at GRCfy are not delegated to a single team — they are baked into architecture, code review, deployment processes, and how we hire and train our engineers.

Privacy-by-design: Platform administrators (super_admin, app_admin) are structurally excluded from accessing tenant audit data at the database query layer — not just the UI. Your compliance data is never visible to GRCfy platform staff in normal operations.
Section 02

Infrastructure & Hosting

Section 03

Encryption

In transit

At rest

// Password hashing — bcrypt, never MD5 or SHA-1

algorithm: "bcrypt" // PHP password_hash() with PASSWORD_BCRYPT

cost_factor: 10 // minimum; tuned upward as hardware improves

stored_form: "hash only" // plaintext discarded immediately after hashing

// Sensitive config values

cipher: "AES-256-CBC" // Laravel Crypt::encryptString()

key_source: ".env APP_KEY" // never stored in the database

Section 04

Authentication & Access Control

Role-based access control

GRCfy implements a granular 11-role permission system. Every action — viewing audit data, uploading evidence, updating control statuses, managing findings — is gated by explicit role checks at the controller layer, not just the UI.

TierRolesAudit data access
Platform super_admin, app_admin, app_agent None — by design
Audit firm — senior audit_admin, lead_auditor Own firm's audits only
Audit firm — reviewer auditor, external_auditor, compliance_viewer Assigned audits only
Client side client_manager, client_admin, client_user Own entity only

Password security

Single Sign-On (SSO)

Session security

Section 05

Data Isolation

Compliance data belonging to different organisations must never be visible across tenants. GRCfy enforces isolation at multiple layers:

Section 06

Immutable Audit Trail

Every significant action on the platform — login, data access, record creation/update/deletion, role change, permission grant, evidence review, force-delete — is written to an append-only compliance log simultaneously in two places:

DestinationFormatRetentionPurpose
Isolated compliance database Structured DB rows (Spatie Activity Log extended) Duration of account Queryable audit viewer, export, supervisory access
Daily-rotating JSON log files Flat JSON per line (ELK/Splunk compatible) 90 days rolling SIEM integration, off-platform backup

Each log entry captures:

Immutability guarantee: Log records in the compliance database override save() and delete() at the model layer — any attempt to modify or delete an existing log entry throws a LogicException. Even platform administrators cannot alter log history through the application.

Permanent deletion ("force delete") operations are logged separately in a recovery_logs table with a mandatory, non-empty reason field, the actor's identity, and a cascaded record of all dependent data that was removed. This log is also immutable and available for export as CSV.

Section 07

Evidence & File Security

Section 08

Application Security

GRCfy is built on Laravel 12 (PHP 8.2) with Inertia.js / React 19. Our standard defences against OWASP Top 10:

ThreatControl
SQL Injection Laravel Eloquent ORM with parameterised queries throughout. Raw SQL only where necessary, always with bound parameters.
Cross-Site Scripting (XSS) React's JSX automatically escapes all dynamic values. No dangerouslySetInnerHTML in production code paths.
CSRF Laravel CSRF middleware enforced on all POST/PUT/PATCH/DELETE routes. Inertia.js sends the XSRF-TOKEN cookie automatically.
Broken Access Control Role checks at the controller layer (not just middleware) for every action. abort_unless() / abort_if() guards on every sensitive method.
Security Misconfiguration Debug mode disabled in production. Sensitive keys in environment variables, never in source code. Encrypted config values in DB.
Insecure Direct Object References Route model binding resolves only records the authenticated user is scoped to. Tenant models are resolved after TenantContext is set — not via direct Laravel route model binding.
Third-party Component Risk Dependencies monitored for CVEs. High-risk packages (e.g., SheetJS) replaced with first-party alternatives. Composer and npm lockfiles committed.
Section 09

Vulnerability Management

Section 10

Incident Response

We maintain an incident response plan covering detection, containment, eradication, recovery, and post-incident review. In the event of a security incident affecting your data:

To report a suspected security incident or data breach: security@grcfy.com

Section 11

Business Continuity & Backups

Section 12

Employee & Vendor Security

Section 13

Responsible Disclosure

We welcome security researchers who responsibly disclose vulnerabilities in GRCfy. If you've discovered a potential security issue, please report it to us before public disclosure so we can investigate and remediate it.

Scope — in scope for reporting:

Out of scope:

Our commitments to researchers:

security@grcfy.com