सामग्री पर जाएँ
HexaTransfer
ब्लॉग पर वापस
एन्क्रिप्शन और सुरक्षा

वेब एप्लिकेशन के लिए सिक्योरिटी हेडर: पूरी सेटअप गाइड

अपने फ़ाइल ट्रांसफर वेब ऐप के लिए ज़रूरी सिक्योरिटी हेडर कॉन्फ़िगर करें। CSP, HSTS, X-Frame-Options से आम वेब अटैक से बचाव।

सिक्योरिटी हेडर HTTP रिस्पॉन्स फील्ड हैं जो ब्राउज़र को बताते हैं कि किसी पेज के व्यवहार को कैसे सीमित करना है। क्लाइंट-साइड AES-256-GCM एन्क्रिप्शन करने वाले फ़ाइल ट्रांसफर ऐप के लिए छह हेडर सबसे ज़्यादा मायने रखते हैं: HTTPS मजबूर करने के लिए Strict-Transport-Security, स्क्रिप्ट इंजेक्शन रोकने के लिए Content-Security-Policy, क्लिकजैकिंग रोकने के लिए X-Frame-Options, URL फ्रैगमेंट लीक रोकने के लिए Referrer-Policy, अनुपयोगी ब्राउज़र API बंद करने के लिए Permissions-Policy, और ब्राउज़िंग कॉन्टेक्स्ट आइसोलेट करने के लिए Cross-Origin-Opener-Policy। इन्हें सही तरीके से लागू करें और JavaScript की एक भी लाइन बदले बिना 80% व्यावहारिक क्लाइंट-साइड हमले ब्लॉक हो जाते हैं।

HSTS और प्रीलोड लिस्ट

Strict-Transport-Security: max-age=63072000; includeSubDomains; preload ब्राउज़र को दो साल के लिए plain HTTP पर कभी कनेक्ट न करने के लिए कहता है। preload डायरेक्टिव आपको Chrome के HSTS प्रीलोड लिस्ट (hstspreload.org) के लिए क्वालिफाई करता है, जो ब्राउज़र के साथ शिप होती है — आपके डोमेन पर पहला रिक्वेस्ट भी HTTPS पर जाता है, शुरुआती MITM विंडो खत्म हो जाती है। सबमिशन वन-वे रोड है; हटाने में महीने लगते हैं। पहले कुछ दिन max-age=300 से टेस्ट करें। HSTS प्रीलोड के बिना फ़ाइल ट्रांसफर सर्विस एक DNS हाईजैक से नकली अपलोड फॉर्म परोसने के लिए तैयार है।

Content Security Policy जो वास्तव में काम करे

CSP डिप्लॉय करना सबसे कठिन लेकिन सबसे मूल्यवान हेडर है। फ़ाइल ट्रांसफर ऐप के लिए सख्त पॉलिसी ऐसी दिखती है: default-src 'none'; script-src 'self' 'wasm-unsafe-eval'; connect-src 'self' https://upload.hexatransfer.com; style-src 'self'; img-src 'self' data:; font-src 'self'; frame-ancestors 'none'; base-uri 'none'; form-action 'self'। कोई इनलाइन स्क्रिप्ट नहीं, wasm को छोड़कर कोई eval नहीं, कोई थर्ड-पार्टी कनेक्शन नहीं। किसी भी इनलाइन इवेंट हैंडलर को बाहरी फ़ाइलों में addEventListener पर मूव करें। libsodium.js के लिए 'wasm-unsafe-eval' ज़रूरी है; इसके बिना Argon2id इंस्टेंशिएट नहीं होगा।

हर बंडल पर Subresource Integrity

अगर आपका JavaScript jsDelivr या unpkg जैसे CDN से लोड होता है, तो हर स्क्रिप्ट टैग पर integrity="sha384-..." एट्रिब्यूट जोड़ें। ब्राउज़र उन स्क्रिप्ट को एग्ज़ीक्यूट करने से इनकार करता है जिनका हैश मेल नहीं खाता — एक कम्प्रोमाइज़ड CDN चुपके से बैकडोर बंडल नहीं पुश कर सकता। अपने डोमेन से सर्व होने वाली सेल्फ-होस्टेड स्क्रिप्ट के लिए SRI कम ज़रूरी है लेकिन फिर भी रक्षात्मक है। CSP के require-sri-for script style के साथ SRI जोड़ें या बिल्ड पाइपलाइन से एनफोर्स करें। HexaTransfer प्रति-रिलीज़ हैश पब्लिश करता है ताकि सतर्क यूज़र मैन्युअल रूप से वेरिफाई कर सकें।

X-Frame-Options और frame-ancestors

क्लिकजैकिंग हमले आपके अपलोड पेज को एक अलग पेज पर ट्रांसपेरेंट iframe में लोड करते हैं, यूज़र को एक ऐसी फ़ाइल पर "सेंड" क्लिक करने के लिए धोखा देते हैं जिसे वे शेयर नहीं करना चाहते थे। X-Frame-Options: DENY सभी फ्रेमिंग ब्लॉक करता है; आधुनिक रिप्लेसमेंट Content-Security-Policy: frame-ancestors 'none' है। दोनों शिप करें — पुराने ब्राउज़र केवल लीगेसी हेडर का सम्मान करते हैं, नए CSP पसंद करते हैं। फ़ाइल ट्रांसफर ऐप के लिए कभी SAMEORIGIN इस्तेमाल न करें; किसी दूसरे पेज से अपलोड UI फ्रेम करने का कोई वैध कारण नहीं है।

Referrer-Policy से फ्रैगमेंट लीक रोकें

ब्राउज़र डिफ़ॉल्ट रूप से Referer हेडर से URL फ्रैगमेंट (#key=... वाला हिस्सा जहाँ आपकी डिक्रिप्शन की रहती है) स्ट्रिप करते हैं, लेकिन पाथ पोर्शन अभी भी लीक होता है। Referrer-Policy: no-referrer सभी referrer जानकारी ब्लॉक करता है — कोई Referer हेडर नहीं, कोई क्रॉस-ओरिजिन लीक नहीं, बाहरी ट्रैकर द्वारा कोई URL फिंगरप्रिंटिंग नहीं। /d/7Kj9xQmN2vP8rBwLsE4fT#k=abc पर एक डाउनलोड पेज के लिए, यह स्लग को किसी भी एक्सटर्नल डोमेन पर लीक होने से रोकता है जिस पर यूज़र क्लिक करता है। इसे हेडर के ज़रिए साइट-वाइड सेट करें; प्रति-लिंक rel="noreferrer" पर निर्भर न हों।

गहरी रक्षा के लिए Permissions-Policy

अगर आपका ऐप कैमरा, माइक्रोफोन, जियोलोकेशन, या USB API इस्तेमाल नहीं करता, तो उन्हें स्पष्ट रूप से डिनाई करें: Permissions-Policy: camera=(), microphone=(), geolocation=(), usb=(), bluetooth=(), accelerometer=(), magnetometer=(), gyroscope=(), payment=()। CSP को बाइपास करने वाला XSS भी वेबकैम चालू नहीं कर सकता। यह हेडर डिप्लॉय करना सस्ता है, फ़ाइल-ट्रांसफर वर्कफ्लो पर कोई UX प्रभाव नहीं, और SOC 2 ऑडिटर को संकेत देता है कि आपने सैंडबॉक्सिंग के बारे में सोचा है।

Cross-Origin आइसोलेशन हेडर

हाई-रेज़ोल्यूशन टाइमर और SharedArrayBuffer (कुछ wasm क्रिप्टो इम्प्लीमेंटेशन के लिए ज़रूरी) तक पहुंच के लिए, ब्राउज़र Cross-Origin-Opener-Policy: same-origin और Cross-Origin-Embedder-Policy: require-corp के ज़रिए क्रॉस-ओरिजिन आइसोलेशन की मांग करते हैं। ये हेडर Spectre-स्टाइल साइड-चैनल हमलों को भी रोकते हैं जो adjacent ओरिजिन से AES की लीक कर सकते हैं। ट्रेडऑफ: एम्बेडेड थर्ड-पार्टी रिसोर्स (YouTube वीडियो, Stripe चेकआउट) तब तक टूट जाते हैं जब तक वे Cross-Origin-Resource-Policy: cross-origin सर्व न करें। बिना थर्ड-पार्टी एम्बेड वाले सिंगल-पर्पज़ फ़ाइल ट्रांसफर ऐप के लिए, आइसोलेशन मुफ्त है।

संवेदनशील पेजों के लिए Cache-Control

डाउनलोड कन्फर्मेशन पेज शॉर्ट-लाइव्ड डिक्रिप्शन की या सेशन टोकन प्रदर्शित कर सकता है। कैशिंग रोकें: Cache-Control: no-store, must-revalidate और Pragma: no-cache। केवल no-cache पर निर्भर न रहें — यह ओरिजिन के खिलाफ रिवेलिडेशन की अनुमति देता है, जिसका मतलब है कैशिंग अभी भी होती है। अपलोड पेज के JavaScript बंडल के लिए, विपरीत लागू होता है: कंटेंट-हैश्ड फाइलनेम (/js/main-a7b3c9.js) के साथ लंबा max-age ताकि CDN कैशिंग काम करे। प्रति पाथ सर्जिकल रूप से हेडर लागू करें।

X-Content-Type-Options और MIME स्निफिंग

X-Content-Type-Options: nosniff ब्राउज़र को कंटेंट के आधार पर MIME टाइप अनुमान लगाने से रोकता है। इसके बिना, एक हमलावर द्वारा अपलोड की गई <script> वाली .txt फ़ाइल वापस सर्व होने पर HTML के रूप में रेंडर हो सकती है। यूज़र-कंट्रोल्ड डाउनलोड सर्व करने वाली ट्रांसफर सर्विस के लिए, nosniff को Content-Disposition: attachment; filename="..." के साथ मिलाएं ताकि ब्राउज़र रेंडर करने के बजाय डाउनलोड करे। फाइलनेम को सर्वर-साइड पाथ ट्रैवर्सल के खिलाफ वैलिडेट करें; डिस्प्ले के अलावा किसी भी चीज़ के लिए अपलोड के मेटाडेटा पर भरोसा न करें।

मॉनिटरिंग और CSP रिपोर्ट

पहले report-only मोड में CSP डिप्लॉय करें, एक हफ्ते के लिए report-uri एंडपॉइंट पर वायलेशन कलेक्ट करें, वैध मुद्दे ठीक करें, फिर एनफोर्स करें। ऑब्ज़र्वेशन के लिए Content-Security-Policy-Report-Only इस्तेमाल करें, एनफोर्समेंट के लिए Content-Security-Policy पर स्विच करें। रिपोर्ट एंडपॉइंट को JSON POST मिलते हैं जो प्रत्येक वायलेशन का वर्णन करते हैं: ब्लॉक किया गया URI, वायलेट हुआ डायरेक्टिव, सोर्स फ़ाइल, लाइन नंबर। Report URI या सेल्फ-होस्टेड sentry इन्हें कलेक्ट करते हैं। साप्ताहिक समीक्षा करें — असली हमले असामान्य ब्लॉक्ड URI के रूप में दिखते हैं।

अपने काम को ग्रेड करें

अपना प्रोडक्शन URL securityheaders.com और Mozilla Observatory से चलाएं। A या A+ ग्रेड परफेक्शन नहीं है लेकिन बेसलाइन है। ज़्यादातर फ़ाइल ट्रांसफर प्रतिद्वंद्वी B या बदतर स्कोर करते हैं क्योंकि वे Permissions-Policy भूल जाते हैं या CSP में 'unsafe-inline' की अनुमति देते हैं। एक छोटी सर्विस आसानी से WeTransfer के सिक्योरिटी हेडर स्कोर को पीछे छोड़ सकती है; हेडर जोड़ना कुछ नहीं खर्च करता, और SOC 2 ऑडिटर के साथ "आपकी CSP सख्त क्यों नहीं है" बातचीत का ऑडिट ट्रेल छोटा होता है जब आपने शुरुआत से सख्त किया हो।

hexatransfer.com पर आज़माएं — मुफ्त, बिना अकाउंट, 10 GB तक।

एंड-टू-एंड एन्क्रिप्शन के साथ बड़ी फ़ाइलें सुरक्षित रूप से भेजें

एंड-टू-एंड एन्क्रिप्शन के साथ 10 GB तक की फ़ाइलें मुफ़्त में ट्रांसफ़र करें। अकाउंट की आवश्यकता नहीं। अपलोड से पहले आपकी फ़ाइलें ब्राउज़र में एन्क्रिप्ट की जाती हैं — कोई और उन्हें पढ़ नहीं सकता।

फ़ाइल भेजें