Skip to main content

DPDP Compliance (India)

Learn how to ensure your code meets India's Digital Personal Data Protection Act 2023 (DPDP) requirements with Juro's compliance scanning.

Current Implementation Status

Juro includes 25 comprehensive DPDP rules that are fully implemented and actively scanning your code:

Implemented Rule Categories

  • Consent & Notice (5 rules) – Consent before processing, purpose-specific consent, withdrawal mechanism, privacy notice, multilingual notice
  • Data Principal Rights (5 rules) – Access, correction, erasure, grievance redressal, nomination
  • Data Fiduciary Duties (4 rules) – Data accuracy, retention, security safeguards, breach notification
  • Significant Data Fiduciary (3 rules) – DPO appointment, DPIA, periodic audits
  • Cross-Border & Localization (2 rules) – Transfer restrictions, data residency
  • Sensitive Data (3 rules) – Aadhaar, PAN, mobile number handling
  • Children's Data (2 rules) – Parental consent, no tracking/targeting
  • Documentation (1 rule) – Processing records

Coverage Details

  • Severity Levels: CRITICAL, HIGH, MEDIUM
  • File Types: TypeScript, JavaScript, TSX, JSX, Python, Java, JSON, YAML, HTML, MD
  • Pattern Types: Variable detection (Indian identifiers), control checks (rights/consent/security), regex (purpose, retention, transfer)
  • CLI: node packages/cli/dist/cli.js scan ./src -r DPDP (from juro repo root)

Key DPDP Requirements

  • Obtain consent before processing personal data
  • Consent must be specific to the purpose
  • Provide an easy consent withdrawal mechanism

Notice (Section 5)

  • Provide clear notice before data collection
  • Notice in English and scheduled Indian languages where applicable

Data Principal Rights (Sections 8–15)

  • Right to access personal data
  • Right to correction
  • Right to erasure (when consent withdrawn or data no longer necessary)
  • Right to grievance redressal (designated officer, complaint mechanism)
  • Right to nominate (for exercising rights after death/incapacity)

Data Fiduciary Duties (Section 8)

  • Ensure data accuracy
  • Limit retention to what is necessary
  • Implement reasonable security safeguards
  • Report personal data breaches to the Data Protection Board

Significant Data Fiduciary (Sections 10–11)

  • Appoint a Data Protection Officer (based in India)
  • Conduct Data Protection Impact Assessments
  • Conduct periodic audits by an independent data auditor

Cross-Border Transfer (Section 16)

  • Transfer only to countries/territories notified by the Central Government
  • Document data localization and residency where required

Sensitive Identifiers

  • Aadhaar: Encrypt, mask, and strictly control access; follow UIDAI guidelines
  • PAN: Protect and mask when displayed
  • Mobile numbers: Treat as personal data; collect only with consent

Children's Data (Section 9)

  • Verifiable parental/guardian consent for users under 18
  • No tracking, behavioral monitoring, or targeted advertising directed at children

Common DPDP Violations

  • Processing Aadhaar, PAN, or mobile without consent
  • No privacy notice or purpose statement
  • No consent withdrawal mechanism

Rights & Grievance

  • No data access, correction, or erasure endpoints
  • No designated grievance officer or complaint mechanism

Security & Breach

  • No encryption or security safeguards for personal data
  • No breach detection or notification procedure

Cross-Border & Children

  • Transferring data to restricted countries
  • Processing children's data without parental consent or tracking children

Best Practices

// Good: Explicit consent and notice
const consent = await getExplicitConsent(userId, purpose);
showPrivacyNotice({ purpose, dataCollected, rights, grievanceContact });

// Bad: No consent or notice
const user = { aadhaar, pan, mobile }; // Collected without consent

Data Principal Rights

// Good: Implement access, correction, erasure, grievance
app.get('/api/user/data', ensureAuth, dataAccessHandler);
app.put('/api/user/correct', ensureAuth, dataCorrectionHandler);
app.delete('/api/user/data', ensureAuth, dataErasureHandler);
app.post('/api/grievance', grievanceHandler);

Sensitive Data (Aadhaar, PAN, Mobile)

// Good: Encrypt and mask
const maskedAadhaar = maskAadhaar(encrypt(aadhaar));
// Consent and access controls in place

// Bad: Plain storage, no consent
const user = { aadhaar: 'xxxx-xxxx-1234', pan: 'ABCDE1234F' };

Juro DPDP Scanning

CLI

# DPDP-only scan (from juro repo root)
node packages/cli/dist/cli.js scan ./src -r DPDP -o table

# DPDP + save report
node packages/cli/dist/cli.js scan ./src -r DPDP -o json -f dpdp-report.json

# Scan a live website
node packages/cli/dist/cli.js scan --url https://example.com -r DPDP -o table

# HTML report for verification (open in browser)
node packages/cli/dist/cli.js scan --url https://example.com -r DPDP -o html -f report.html --open

# Filter by severity
node packages/cli/dist/cli.js scan ./src -r DPDP --severity HIGH,CRITICAL

LLM-assisted options (DPDP)

Optional verification and false-positive reduction (require Ollama with mistral-regtech):

OptionPurpose
--verifyRun verification layer: classify findings as CONFIRMED_FAIL or INCONCLUSIVE (LLM never gives PASS).
--verify-max <n>Max findings to send to the LLM (default 30).
--llm-filter-fpRemove likely false positives from the report.
--dpdp-assistWhen scanning a URL, suggest privacy/terms links to fetch and re-scan.
# Verify up to 10 findings
node packages/cli/dist/cli.js scan ./examples -r DPDP --verify --verify-max 10 -o table

# URL scan with HTML report and verification
node packages/cli/dist/cli.js scan --url https://example.com -r DPDP --verify --verify-max 10 -o html -f report.html --open

Rule Summary

  • 36 total rules in Juro (5 GDPR, 6 DORA, 25 DPDP)
  • List all: node packages/cli/dist/cli.js rules
  • DPDP rules use IDs such as DPDP-CONSENT-001, DPDP-RIGHTS-001, DPDP-SENSITIVE-001, etc.

Compliance Checklist

Automated Checks (Juro)

  • Consent & Notice – Scanned
  • Data Principal Rights – Scanned
  • Data Fiduciary Duties – Scanned
  • Sensitive Data (Aadhaar, PAN, mobile) – Scanned
  • Children's Data – Scanned
  • Cross-Border Transfer – Scanned

Manual Verification

  • Consent is free, specific, informed, and unambiguous
  • Grievance officer designated and contact details published
  • Breach response and notification process defined
  • Data retention and erasure procedures documented

Penalties (DPDP Act)

ViolationPenalty (up to)
Data breach / unauthorized transfer₹250 crore
Non-reporting of breach₹200 crore
Children's data violations₹200 crore
Other violations₹50–150 crore

Resources