मुख्य सामग्री पर जाएँ

SaaS customer data import सुरक्षा: file validate करें और tenant अलग रखें

Tenant-bound staging, parser limits, strict validation, safe preview और atomic commit से SaaS CSV तथा spreadsheet imports सुरक्षित करें।

इस मार्गदर्शिका में

SaaS में customer data import कैसे सुरक्षित करें?

Data import आपके नियंत्रण से बाहर की file लेकर उसे product records में बदलता है। Requester और import scope authorize करें, uploaded object तथा processing job को एक tenant से बाँधें, सख्त limits में parse करें और customer data लिखने से पहले हर row validate करें। File upload सफल होना केवल यह बताता है कि file पहुँची; यह नहीं कि उसका content सुरक्षित या authorized है।

Import authorize करें और staging को उसी tenant तक सीमित रखें

Upload target देने या काम शुरू करने से पहले user का मौजूदा role, allowed record type और purpose जाँचें। File को private storage में opaque import ID से रखें, client-chosen path से नहीं। Tenant, requester और expiry साथ persist करें। Worker उस संबंध को फिर load और validate करे; file या queue message के tenant field पर भरोसा न करे।

केवल समर्थित formats और सुरक्षित parser size स्वीकारें

स्पष्ट format allowlist, byte और row limit, archive expansion, field length और processing timeout तय करें। Filename extension या browser Content-Type पर अकेले भरोसा न करें। जरूरत पर scan या quarantine करें, parser libraries patch रखें और risky parsing को सीमित worker में बिना अनावश्यक network access चलाएँ।

इस बिंदु के स्रोत: OWASP Cheat Sheet: file uploadXML External Entity Prevention Cheat Sheet

CSV और spreadsheet cell को data मानें, executable instruction नहीं

Import के दौरान formula, macro, external workbook link या embedded content evaluate न करें। Expected columns को value की तरह parse करें; जरूरत पर formula वाले unsupported format reject करें और preview में risky content escaped text के रूप में दिखाएँ। CSV quoting delimiter संभालता है, cell को execute या trust करने की अनुमति नहीं देता।

इस बिंदु के स्रोत: CSV InjectionOWASP Cheat Sheet: file upload
Customer data import safety worksheet
Import type और उद्देश्यTenant/requester scopeFormat और parser limitsValidation/preview नियमCommit/rollback test owner
Contact या account records
Bulk configuration
Legacy system migration

Imported rows कैसे validate और commit करें?

स्पष्ट schema और tenant ownership rules से validate करें

Required fields, data types, allowed values, date/number range, foreign-key relation और duplicates जाँचें। User, project और attachment जैसे references को उसी tenant में re-authorize करें; file का tenant ID किसी दूसरे customer के records चुनने न पाए। दूसरे customer के सुरक्षित record उजागर किए बिना row-level feedback दें।

Preview में warnings और होने वाले बदलाव साफ दिखाएँ

Commit से पहले counts, mapped fields, rejected rows और updates का असर दिखाएँ। Untrusted value को escape करें और imported HTML render न करें। बताएं existing records update, skip या duplicate होंगे; destructive या बड़े बदलाव पर confirmation माँगें।

Commit का व्यवहार स्पष्ट रखें और retry idempotent बनाएँ

तय करें कि import पूरी तरह all-or-nothing है या accepted rows के साथ error report देता है। जहाँ संभव हो transaction या staging-and-swap तरीका लें, हर write को authorized tenant से बाँधें और duplicate runs रोकने के लिए स्थिर import ID रखें। आधे में job fail हो तो दूसरे tenant का data मिलाए बिना resume या rollback कर सकें।

Import file, workers और audit records कैसे सुरक्षित रखें?

Staging artifacts तय समय पर delete करें

Source file, preview और rejected-row report की छोटी retention अवधि रखें; सफल process या expiry के बाद हटाएँ। Backup और temporary copy पर वही access तथा location policy लगाएँ। Failed import cleanup monitor करें ताकि abandoned bucket में sensitive file अनिश्चित समय तक न रहे।

Parser-worker access और resource consumption सीमित करें

Import worker को केवल staging area और जरूरी data operations तक access दें। Concurrency, memory, CPU, decompressed size, sheet count, row count और runtime सीमित करें ताकि malformed file shared capacity न घेर ले। बड़े batches के लिए per-tenant quota और queue fairness रखें।

Customer rows log किए बिना process audit करें

Import ID, tenant reference, actor, file digest, format, row counts, validation result, commit time और error category दर्ज करें। Raw file content, secret और personal data सामान्य logs से बाहर रखें। Detailed report access सीमित करें और बार-बार parser failure, बड़े imports या cross-tenant validation error पर alert दें।

इस बिंदु के स्रोत: OWASP Cheat Sheet: loggingSecurity Best Practices in AWS CloudTrail

SaaS customer import सुरक्षा के सवाल

क्या uploaded file scan करने से import सुरक्षित हो जाता है?

नहीं। Scanner एक control है। Import authorize करना, parser सीमित करना, fields और references validate करना, tenant scope बनाए रखना और failure सुरक्षित संभालना भी जरूरी है।

क्या import worker हर row में दिए tenant ID पर भरोसा करे?

नहीं। Job को server द्वारा चुने और authorize tenant से बाँधें। File का tenant value साधारण input मानें और mismatch को दूसरे tenant तक लिखने देने के बजाय reject करें।

क्या preview uploaded HTML सीधे दिखा सकता है?

नहीं। Imported value को escaped text की तरह render करें और markup, formula या embedded content execute न करें। Preview भी browser में untrusted input दिखाता है।

कुछ rows invalid हों तो बाकी import करनी चाहिए?

All-or-nothing या partial acceptance में से व्यवहार चुनकर स्पष्ट करें। दिखाएँ कौन-सी rows लिखेंगी, retry idempotent बनाएँ और failure या retry से duplicate तथा missing records का अस्पष्ट मिश्रण न बनने दें।