Noteshik

Security

Security at Noteshik

Your notes may contain your most private thoughts, ideas, and sensitive information. We treat security as a core requirement, not an afterthought. Here's exactly how we protect your data.

TLS 1.2+ Encryption in Transit

All communication between the app and our servers is encrypted using TLS 1.2 or higher. Your notes never travel over unencrypted connections — all HTTP requests are automatically redirected to HTTPS.

Certificates issued by Let's Encrypt with automatic renewal via Certbot.

bcrypt Password Hashing

Passwords are hashed using bcrypt with a cost factor of 12 before being stored. bcrypt is deliberately slow and includes automatic salting, making it resistant to brute-force and rainbow table attacks.

We cannot recover your password — if you forget it, you must reset it via email.

Short-Lived JWT Sessions

Authentication uses JSON Web Tokens (JWT) signed with a server-side secret using HMAC-SHA256. Tokens have a short expiry window to minimize the impact of token theft. Tokens are stored only on your device.

The JWT secret is stored in environment variables — never in source code.

Rate Limiting

Login and registration endpoints are rate-limited to 10 requests per 15 minutes per IP address to prevent brute-force and credential-stuffing attacks. API endpoints are limited to 100 requests per 15 minutes. Upload endpoints are capped at 20 per hour.

Input Sanitization

All user input is sanitized server-side before processing to prevent Cross-Site Scripting (XSS) and injection attacks. All database queries use parameterized statements — no string interpolation of user data into SQL.

HTTP Security Headers

Our API server uses Helmet.js to set strict HTTP security headers including Content-Security-Policy, X-Frame-Options: DENY, X-Content-Type-Options: nosniff, Strict-Transport-Security, and Referrer-Policy.

CSRF Protection

State-changing API requests (create, update, delete) require a valid CSRF token in addition to JWT authentication, protecting against Cross-Site Request Forgery attacks from malicious websites.

Email Verification

New accounts require email verification before accessing the service. This prevents account registration with fake or stolen email addresses and reduces spam and abuse on the platform.

Technical Security Specifications

TLS Version TLS 1.2 minimum, TLS 1.3 preferred. SSLv3, TLS 1.0, and TLS 1.1 are disabled.
Password Algorithm bcrypt, cost factor 12, with automatic unique salt per password.
JWT Signing Algorithm HMAC-SHA256 (HS256). Tokens carry id, email, and exp claims only.
Auth Rate Limit 10 requests / 15-minute window per IP for /auth/login and /auth/register.
General API Rate Limit 100 requests / 15-minute window per IP for all other /api/* endpoints.
SQL Injection Prevention Parameterized queries via node-postgres (pg library). No raw string interpolation.
XSS Prevention Server-side input sanitization middleware. CSP headers block inline script execution from non-self origins.
CORS Policy Strict allowlist of permitted origins. Access-Control-Allow-Origin is never set to wildcard (*) on authenticated endpoints.
Request Body Limit 50 MB maximum body size, enforced before parsing. Prevents memory exhaustion attacks.
Directory Traversal Static file server blocks any path containing .. sequences.

Infrastructure Security

Server Environment

SSH & Remote Access

Database Security

Reverse Proxy & Network

Data Protection Practices

Secrets Management

Audio & Voice Data

Note Content

Deleted Data

Backup & Disaster Recovery

Security Incident Response

In the event of a confirmed security incident affecting user data, we follow this response procedure:

  1. Contain: Immediately isolate the affected system and revoke potentially compromised credentials.
  2. Assess: Determine the scope and nature of the breach — which data was affected, which users are impacted.
  3. Notify: If personal data was exposed, affected users will be notified via email within 72 hours of confirming the breach, as required by GDPR Article 33. The notification will describe what happened, what data was exposed, and what steps you should take.
  4. Remediate: Fix the root cause vulnerability, force password resets for affected accounts if credentials may be compromised, rotate affected secrets.
  5. Post-mortem: Document what happened, why it happened, and what changes were made to prevent recurrence.

We will never attempt to conceal a data breach or delay notification beyond legal requirements.

What We Don't Do

🔒 Responsible Disclosure Program

Found a security vulnerability in Noteshik? We want to know. Please report it to us before disclosing publicly so we can fix it and protect our users.

Report to: support@9gg.app (use the contact form)

What to include: A clear description of the vulnerability, steps to reproduce it, your assessment of the impact, and any proof-of-concept code if available.

What to expect: We will acknowledge receipt within 48 hours. We will investigate and keep you updated on progress. We aim to resolve confirmed critical vulnerabilities within 7 days and high-severity within 30 days.

Safe Harbor: We will not take legal action against researchers who follow responsible disclosure principles — who report privately, avoid accessing user data beyond what is necessary to demonstrate the vulnerability, and give us reasonable time to fix the issue before publishing.

Scope: The Noteshik backend API (noteshik.9gg.app), mobile app authentication flows, and data storage mechanisms. Out of scope: social engineering, physical attacks, denial of service testing, and third-party services (Groq, Contabo).