ऐसे हेडर के बारे में ज़्यादा जानें जो आपकी साइट को सुरक्षित रख सकते हैं. साथ ही, इनकी मदद से सबसे अहम जानकारी भी तुरंत देखी जा सकती है.
इस लेख में सुरक्षा से जुड़े सबसे अहम हेडर के बारे में बताया गया है. इनकी मदद से, आपकी वेबसाइट पर आते हैं. वेब पर आधारित सुरक्षा से जुड़ी सुविधाओं को समझने के लिए, इसका इस्तेमाल करें. साथ ही, इन्हें अपनी वेबसाइट पर लागू करें. साथ ही, इसका इस्तेमाल तब किया जा सकता है, जब आपको रिमाइंडर की ज़रूरत हो.
- उपयोगकर्ता के संवेदनशील डेटा को मैनेज करने वाली वेबसाइटों के लिए, सुरक्षा से जुड़े हेडर सुझाए गए हैं:
- कॉन्टेंट की सुरक्षा के बारे में नीति (सीएसपी)
- भरोसेमंद टाइप
- सभी वेबसाइटों के लिए, सुरक्षा से जुड़े हेडर का सुझाव दिया जाता है:
- X-Content-Type-Options
- X-फ़्रेम के विकल्प
- क्रॉस-ऑरिजिन रिसॉर्स पॉलिसी (सीओआरपी)
- क्रॉस-ऑरिजिन ओपनर पॉलिसी (सीओओपी)
- एचटीटीपी स्ट्रिक्ट ट्रांसपोर्ट सिक्योरिटी (एचएसटीएस)
- बेहतर सुविधाओं वाली वेबसाइटों के लिए सुरक्षा से जुड़े हेडर:
- क्रॉस-ऑरिजिन रिसॉर्स शेयरिंग (सीओआरएस)
- क्रॉस-ऑरिजिन एम्बेडर नीति (सीओईपी)
सुरक्षा से जुड़े हेडर के बारे में ज़्यादा जानने से पहले, वेब पर पहले से मौजूद खतरों के बारे में जानें और आपको इन सुरक्षा हेडर का इस्तेमाल क्यों करना चाहिए.
इंजेक्शन जोखिम से अपनी साइट की सुरक्षा करें
इंजेक्शन से जुड़े जोखिम तब पैदा होते हैं, जब आपकी ओर से गैर-भरोसेमंद डेटा को प्रोसेस किया जाता है ऐप्लिकेशन के काम करने के तरीके पर असर पड़ सकता है और आम तौर पर, हमलावर से कंट्रोल की जाने वाली स्क्रिप्ट. इंजेक्शन की वजह से होने वाली सबसे आम जोखिम की आशंका की गड़बड़ी क्रॉस-साइट स्क्रिप्टिंग (XSS) इसमें इसके विविध रूप, जिनमें प्रतिबिंबित XSS, XSS सेव किया गया, DOM पर आधारित XSS, और इस्तेमाल करें.
XSS के जोखिम की वजह से, आम तौर पर किसी हमलावर को उपयोगकर्ता के डेटा का पूरा ऐक्सेस मिल सकता है ऐप्लिकेशन और उसी वेब पर होस्ट की गई किसी भी दूसरी जानकारी के ज़रिए प्रोसेस की जाती हो ऑरिजिन के लिए सेट किया गया है.
इंजेक्शन से बचाव के पारंपरिक तरीकों में, ऑटोस्केपिंग का लगातार इस्तेमाल शामिल है एचटीएमएल टेंप्लेट सिस्टम, जिसमें खतरनाक JavaScript के इस्तेमाल पर कोई पाबंदी लगाई गई है एपीआई और होस्ट के ज़रिए उपयोगकर्ता के डेटा को सही तरीके से प्रोसेस करने की अनुमति देता है फ़ाइल को किसी अलग डोमेन में अपलोड करना होगा और उपयोगकर्ता के कंट्रोल वाले एचटीएमएल से सैनिटाइज़ करना होगा.
- कॉन्टेंट की सुरक्षा के बारे में नीति (सीएसपी) का इस्तेमाल करके, यह तय करें कि किन स्क्रिप्ट को इंजेक्शन के जोखिम को कम करने के लिए, आपके ऐप्लिकेशन में लागू किया जाता है.
- खतरनाक डेटा में पास किए गए डेटा को सैनिटाइज़ेशन लागू करने के लिए, भरोसेमंद टाइप का इस्तेमाल करें JavaScript API.
- ब्राउज़र को ब्राउज़र से चलाने से रोकने के लिए, X-Content-Type-Options का इस्तेमाल करें आपकी वेबसाइट के संसाधनों के MIME टाइप को गलत तरीके से समझ पाता है. इसकी वजह से स्क्रिप्ट निष्पादन.
अपनी साइट को दूसरी वेबसाइटों से अलग करना
वेब के खुले होने की वजह से, वेबसाइटें एक-दूसरे के साथ इस तरह से इंटरैक्ट कर सकती हैं किसी ऐप्लिकेशन की सुरक्षा से जुड़ी उम्मीदों का उल्लंघन कर सकता है. इसमें उम्मीद से ज़्यादा कॉन्टेंट है पुष्टि किए गए अनुरोध करना या किसी दूसरे ऐप्लिकेशन से डेटा एम्बेड करना हमलावर का दस्तावेज़, जिससे हमलावर को ऐप्लिकेशन डेटा में बदलाव करने या उसे पढ़ने की अनुमति मिलती है.
वेब आइसोलेशन को कमज़ोर करने वाले सामान्य जोखिमों में ये शामिल हैं क्लिकजैकिंग, क्रॉस-साइट जालसाज़ी (सीएसआरएफ), क्रॉस-साइट स्क्रिप्ट शामिल करने की प्रोसेस (XSSI), और कई अन्य साइट के गलत इस्तेमाल की जानकारी.
- X-Frame-Options का इस्तेमाल करके, अपने दस्तावेज़ों को नुकसान पहुंचाने वाली वेबसाइट है.
- क्रॉस-ऑरिजिन रिसॉर्स पॉलिसी (सीओआरपी) का इस्तेमाल करके, अपनी वेबसाइट के किसी क्रॉस-ऑरिजिन वेबसाइट में शामिल किए जाने वाले संसाधनों के डेटा को शामिल नहीं करता है.
- अपनी वेबसाइट की सुरक्षा करने के लिए, क्रॉस-ऑरिजिन ओपनर पॉलिसी (सीओओपी) का इस्तेमाल करें नुकसान पहुंचाने वाली वेबसाइटों के इंटरैक्शन से विंडो.
- क्रॉस-ऑरिजिन रिसॉर्स शेयरिंग (सीओआरएस) का इस्तेमाल करके, अपनी आपकी वेबसाइट पर मौजूद संसाधनों को क्रॉस-ऑरिजिन दस्तावेज़ों से इकट्ठा किया जाता है.
पोस्ट-स्पेक्टर वेब डेवलपमेंट पढ़ने के लिए बहुत अच्छा होता है अगर आपकी दिलचस्पी इन हेडर में है.
सुरक्षित रूप से एक बेहतरीन वेबसाइट बनाएं
स्पेक्टर किसी भी तरह का डेटा लोड करता है
आपके पढ़ने की क्षमता रखने वाले ब्राउज़िंग कॉन्टेक्स्ट ग्रुप में सेव हो
एक ही ऑरिजिन से जुड़ी नीति के बावजूद. ब्राउज़र, सुविधाओं पर पाबंदी लगाते हैं
जो आपके काम के डेटा को,
"क्रॉस-ऑरिजिन आइसोलेशन". क्रॉस-ऑरिजिन आइसोलेशन की मदद से
SharedArrayBuffer
जैसी बेहतरीन सुविधाओं का इस्तेमाल करना.
- इन कामों के लिए, सीओओपी के साथ-साथ क्रॉस-ऑरिजिन एम्बेडर नीति (सीओईपी) का इस्तेमाल करें क्रॉस-ऑरिजिन आइसोलेशन चालू करें.
अपनी साइट पर ट्रैफ़िक को एन्क्रिप्ट (सुरक्षित) करें
एन्क्रिप्शन से जुड़ी समस्याएं तब दिखती हैं, जब कोई ऐप्लिकेशन इससे चोरी करने वालों को उपयोगकर्ता की बातचीत के बारे में जानने में मदद मिलती है. ऐप के साथ.
एन्क्रिप्ट (सुरक्षित) करने का तरीका सही न होने की वजह से, इन मामलों में समस्या आ सकती है: एचटीटीपीएस का इस्तेमाल न करना,
मिले-जुले कॉन्टेंट, Secure
के बिना कुकी सेट करना
एट्रिब्यूट
(या __Secure
उपसर्ग)
या लैक्स सीओआरएस की पुष्टि करें
लॉजिक.
- एचटीटीपी स्ट्रिक्ट ट्रांसपोर्ट सिक्योरिटी (एचएसटीएस) का इस्तेमाल करें. इससे एचटीटीपीएस का इस्तेमाल करके कॉन्टेंट बनाना.
कॉन्टेंट की सुरक्षा के बारे में नीति (सीएसपी)
क्रॉस-साइट स्क्रिप्टिंग (XSS) एक अटैक है जहां किसी वेबसाइट पर जोखिम की आशंका, नुकसान पहुंचाने वाली स्क्रिप्ट को इंजेक्ट करने देती है और लागू किया गया.
Content-Security-Policy
एक अतिरिक्त लेयर उपलब्ध कराता है, ताकि XSS हमलों को कम किया जा सके
यह तय करना कि पेज से कौन-कौनसी स्क्रिप्ट चलाई जा सकती हैं.
हमारा सुझाव है कि आप इनमें से किसी एक तरीके का इस्तेमाल करके, सख्त सीएसपी चालू करें:
- अगर सर्वर पर अपने एचटीएमएल पेजों को रेंडर किया जाता है, तो नॉन्स पर आधारित सख्त सीएसपी का इस्तेमाल करें.
- अगर आपका एचटीएमएल स्टैटिक तरीके से या कैश मेमोरी में सेव किया जाना है, तो उदाहरण के लिए अगर यह एक पेज वाला ऐप्लिकेशन, हैश-आधारित सख्त सीएसपी का इस्तेमाल करें.
इस्तेमाल का उदाहरण: नॉन्स-आधारित सीएसपी
Content-Security-Policy:
script-src 'nonce-{RANDOM1}' 'strict-dynamic' https: 'unsafe-inline';
object-src 'none';
base-uri 'none';
सुझाए गए इस्तेमाल
1. नॉन्स-आधारित सख्त सीएसपी {: #nonce-based-csp} का इस्तेमाल करें
अगर सर्वर पर अपने एचटीएमएल पेजों को रेंडर किया जाता है, तो नॉन्स पर आधारित सख्त सीएसपी का इस्तेमाल करें.
सर्वर साइड पर हर अनुरोध के लिए, एक नई स्क्रिप्ट नॉन्स वैल्यू जनरेट करें और उसे सेट करें यहां दिया गया हेडर:
सर्वर कॉन्फ़िगरेशन फ़ाइल
Content-Security-Policy: script-src 'nonce-{RANDOM1}' 'strict-dynamic' https: 'unsafe-inline'; object-src 'none'; base-uri 'none';
एचटीएमएल में, स्क्रिप्ट लोड करने के लिए, सभी के nonce
एट्रिब्यूट को सेट करें
<script>
टैग को एक ही {RANDOM1}
स्ट्रिंग में जोड़ें.
index.html
<script nonce="{RANDOM1}" src="https://example.com/script1.js"></script> <script nonce="{RANDOM1}"> // Inline scripts can be used with the <code>nonce</code> attribute. </script>
Google Photos, नॉन्स पर आधारित एक सख्त सीएसपी है उदाहरण के लिए. DevTools का इस्तेमाल करके, इसके इस्तेमाल का तरीका देखें.
2. हैश-आधारित सख्त सीएसपी {: #hash-based-csp} का इस्तेमाल करें
अगर एचटीएमएल को स्टैटिक तौर पर या कैश मेमोरी में सेव करना हो, तो एक पेज का ऐप्लिकेशन बनाने के लिए, हैश-आधारित सख्त सीएसपी का इस्तेमाल करें.
सर्वर कॉन्फ़िगरेशन फ़ाइल
Content-Security-Policy: script-src 'sha256-{HASH1}' 'sha256-{HASH2}' 'strict-dynamic' https: 'unsafe-inline'; object-src 'none'; base-uri 'none';
HTML में, हैश-आधारित टैग लागू करने के लिए, आपको अपनी स्क्रिप्ट को इनलाइन करना होगा नीति का पालन नहीं करता, क्योंकि ज़्यादातर ब्राउज़र बाहरी साइट के लिए हैशिंग स्क्रिप्ट.
index.html
<script> ...// your script1, inlined </script> <script> ...// your script2, inlined </script>
एक्सटर्नल स्क्रिप्ट लोड करने के लिए, "सोर्स की गई स्क्रिप्ट को डाइनैमिक तौर पर लोड करें" लेख पढ़ें कम दूसरा विकल्प: हैश पर आधारित सीएसपी रिस्पॉन्स हेडर सेक्शन.
सीएसपी का आकलन करने वाला, इन कामों के लिए एक अच्छा टूल है अपने सीएसपी का आकलन करें. साथ ही, नॉन्स-आधारित सख्त सीएसपी उदाहरण का इस्तेमाल करें. DevTools का इस्तेमाल करके, इसके इस्तेमाल का तरीका देखें.
इस्तेमाल किए जा सकने वाले ब्राउज़र
सीएसपी के बारे में ध्यान देने वाली दूसरी बातें
frame-ancestors
डायरेक्टिव, आपकी साइट को क्लिकजैकिंग से बचाता है. यह एक ऐसा जोखिम है जो तब पैदा होता है, जब आपकी एम्बेड करने के लिए गैर-भरोसेमंद साइटें. अगर आपको आसान तरीका चाहिए, तो लोड होने से रोकने के लिएX-Frame-Options
, लेकिनframe-ancestors
देता है आपको एक बेहतर कॉन्फ़िगरेशन का इस्तेमाल करना होगा, ताकि सिर्फ़ खास ऑरिजिन को एम्बेडर के तौर पर अनुमति दी जा सके.- शायद आपने सीएसपी का इस्तेमाल यह पक्का करने के लिए किया हो कि आपकी साइट के सभी संसाधन एचटीटीपीएस पर लोड होता है. इसमें ये हैं कम प्रासंगिक हो जाते हैं: आज के समय में, ज़्यादातर ब्राउज़र मिक्स्ड कॉन्टेंट.
- रिपोर्ट-ओनली मोड में भी सीएसपी सेट किया जा सकता है मोड है.
- अगर सीएसपी को हेडर सर्वर-साइड के तौर पर सेट नहीं किया जा सकता, तो इसे मेटा के तौर पर भी सेट किया जा सकता है टैग के साथ जोड़ा जा सकता है. ध्यान दें कि आप मेटा टैग के लिए रिपोर्ट-ओनली मोड का इस्तेमाल नहीं कर सकते (हालांकि, इसमें बदलाव हो सकता है).
ज़्यादा जानें
भरोसेमंद टाइप
DOM पर आधारित
XSS
ऐसा हमला जिसमें नुकसान पहुंचाने वाला डेटा, डाइनैमिक कोड को सपोर्ट करने वाले सिंक में चला जाता है
एक्ज़ीक्यूट किया जा सकता है, जैसे कि eval()
या .innerHTML
.
भरोसेमंद टाइप की मदद से, सुरक्षा से जुड़ी समीक्षा करने, कॉन्टेंट लिखने, और उसका रखरखाव करने में मदद मिलती है DOM XSS से मुक्त ऐप्लिकेशन. इन्हें CSP के ज़रिए चालू किया जा सकता है और JavaScript कोड को डिफ़ॉल्ट रूप से सुरक्षित रखा जाता है. इसके लिए, नुकसान पहुंचाने वाले वेब एपीआई को सिर्फ़ स्वीकार करने के लिए सीमित किया जाता है एक विशेष ऑब्जेक्ट—एक विश्वसनीय प्रकार.
ये ऑब्जेक्ट बनाने के लिए, सुरक्षा नीतियां बनाई जा सकती हैं. इन नीतियों में, यह पक्का किया जा सकता है कि कि सुरक्षा के नियम (जैसे कि एस्केपिंग या सैनिटाइज़ेशन) हर बार लागू होते हैं DOM में लिखे जाने से पहले. तब ये नीतियां जो DOM XSS की संभावित रूप से शुरुआत कर सकते हैं.
इस्तेमाल के उदाहरण
Content-Security-Policy: require-trusted-types-for 'script'
// Feature detection
if (window.trustedTypes && trustedTypes.createPolicy) {
// Name and create a policy
const policy = trustedTypes.createPolicy('escapePolicy', {
createHTML: str => {
return str.replace(/\</g, '<').replace(/>/g, '>');
}
});
}
// Assignment of raw strings is blocked by Trusted Types.
el.innerHTML = 'some string'; // This throws an exception.
// Assignment of Trusted Types is accepted safely.
const escaped = policy.createHTML('<img src=x onerror=alert(1)>');
el.innerHTML = escaped; // '&lt;img src=x onerror=alert(1)&gt;'
सुझाए गए इस्तेमाल
-
खतरनाक DOM सिंक के लिए विश्वसनीय प्रकार लागू करें सीएसपी और भरोसेमंद टाइप का हेडर:
Content-Security-Policy: require-trusted-types-for 'script'
फ़िलहाल, इसके लिए सिर्फ़
'script'
ही स्वीकार किया जाने वाला मान हैrequire-trusted-types-for
डायरेक्टिव.बेशक, आप भरोसेमंद प्रकार के साथ दूसरे सीएसपी निर्देशों को जोड़ सकते हैं:
नॉन्स-आधारित सीएसपी को ऊपर से भरोसेमंद टाइप के साथ मर्ज करना:
Content-Security-Policy:
script-src 'nonce-{RANDOM1}' 'strict-dynamic' https: 'unsafe-inline';
object-src 'none';
base-uri 'none';
require-trusted-types-for 'script';
<aside class="note"><b>नोट: </b> आप अतिरिक्त <code>credible-types</code> सेट करके, भरोसेमंद टाइप की नीति के तहत दिखने वाले नामों को सीमित कर सकते हैं डायरेक्टिव (उदाहरण के लिए, <code> Trusted-types myPolicy</code>). हालांकि, ऐसा करने की कोई शर्त नहीं होती. </aside>
-
नीति परिभाषित करें
नीति:
// Feature detection
if (window.trustedTypes && trustedTypes.createPolicy) {
// Name and create a policy
const policy = trustedTypes.createPolicy('escapePolicy', {
createHTML: str => {
return str.replace(/\/g, '>');
}
});
}
-
नीति लागू करें
DOM में डेटा लिखते समय इस नीति का इस्तेमाल करें:
// Assignment of raw strings are blocked by Trusted Types.
el.innerHTML = 'some string'; // This throws an exception.</p>
<p>// Assignment of Trusted Types is accepted safely.
const escaped = policy.createHTML('<img src="x" onerror="alert(1)">');
el.innerHTML = escaped; // '<img src=x onerror=alert(1)>'
require-trusted-types-for 'script'
के साथ, भरोसेमंद टाइप का इस्तेमाल करना
ज़रूरी है. स्ट्रिंग के साथ किसी भी खतरनाक DOM API का इस्तेमाल करने पर
गड़बड़ी.
इस्तेमाल किए जा सकने वाले ब्राउज़र
ज़्यादा जानें
- 'भरोसेमंद' सुविधा के साथ डीओएम-आधारित क्रॉस-साइट स्क्रिप्टिंग के जोखिमों को रोकें
टाइप
- सीएसपी: के लिए ज़रूरी- Trusted-types-for - एचटीटीपी |
MDN
- सीएसपी: भरोसेमंद जानकारी - एचटीटीपी |
MDN
- भरोसेमंद टाइप का डेमो— DevTools की जांच करने वाला टूल खोलें और देखें
क्या हो रहा है
X-Content-Type-Options
जब आपके डोमेन से कोई नुकसान पहुंचाने वाला एचटीएमएल दस्तावेज़ पेश किया जाता है (उदाहरण के लिए, अगर किसी फ़ोटो सेवा पर अपलोड की गई इमेज में मान्य एचटीएमएल मार्कअप शामिल है), कुछ ब्राउज़र उसे एक चालू दस्तावेज़ मानेगा और उसे संदर्भ को ध्यान में रखते हुए क्रॉस-साइट स्क्रिप्टिंग गड़बड़ी ठीक करें.
X-Content-Type-Options: nosniff
इसे ब्राउज़र को निर्देश देकर रोकता है कि
MIME टाइप, जो
दिए गए जवाब के लिए Content-Type
हेडर सही है. यह हेडर
आपके सभी संसाधनों के लिए सुझाया गया है.
इस्तेमाल के उदाहरण
X-Content-Type-Options: nosniff
सुझाए गए इस्तेमाल
उन सभी संसाधनों के लिए X-Content-Type-Options: nosniff
का सुझाव दिया जाता है जो यहां दी गई हैं
आपका सर्वर और सही Content-Type
हेडर.
![X-कॉन्टेंट-टाइप-विकल्प: नॉन्सनिफ़](https://web.dev/static/articles/security-headers/image/x-content-type-options-n-7088b3ce0282f.png?authuser=6&hl=hi)
दस्तावेज़ के एचटीएमएल के साथ भेजे गए हेडर का उदाहरण
X-Content-Type-Options: nosniff Content-Type: text/html; charset=utf-8
इस्तेमाल किए जा सकने वाले ब्राउज़र
ज़्यादा जानें
X-फ़्रेम-विकल्प
अगर नुकसान पहुंचाने वाली कोई वेबसाइट आपकी साइट को iframe के तौर पर एम्बेड कर सकती है, तो इसकी मदद से हमलावरों को ऐसी कार्रवाइयों के बारे में बताना चाहिए क्लिकजैकिंग में शामिल हैं. साथ ही, कुछ केस स्पेक्ट्र-टाइप अटैक नुकसान पहुंचाने वाली वेबसाइटों को किसी एम्बेड किए गए दस्तावेज़ के कॉन्टेंट के बारे में जानने का मौका मिलता है.
X-Frame-Options
से पता चलता है कि ब्राउज़र को रेंडर करने की अनुमति दी जानी चाहिए या नहीं
<frame>
, <iframe>
, <embed>
या <object>
में मौजूद कोई पेज. सभी दस्तावेज़
की सलाह दी जाती है कि आप इस हेडर को भेजकर यह बताएं कि क्या वे
अन्य दस्तावेज़ों के ज़रिए एम्बेड किया गया हो.
इस्तेमाल के उदाहरण
X-Frame-Options: DENY
सुझाए गए इस्तेमाल
वे सभी दस्तावेज़ जिन्हें एम्बेड करने के लिए डिज़ाइन नहीं किया गया है, X-Frame-Options
हेडर का इस्तेमाल करना चाहिए.
नीचे दिए गए कॉन्फ़िगरेशन, iframe लोड करने पर किस तरह असर डालते हैं, इसके लिए
डेमो. X-Frame-Options
बदलें
ड्रॉपडाउन मेन्यू और iframe को फिर से लोड करें बटन पर क्लिक करें.
आपकी वेबसाइट को किसी दूसरी वेबसाइट से एम्बेड किए जाने से सुरक्षित रखता है
किसी भी दूसरे दस्तावेज़ से एम्बेड किए जाने से मना करें.
![X-Frame-Options: DENY](https://web.dev/static/articles/security-headers/image/x-frame-options-deny-0729b63f3a2e.png?authuser=6&hl=hi)
X-Frame-Options: DENY
आपकी वेबसाइट को किसी भी क्रॉस-ऑरिजिन वेबसाइट से एम्बेड होने से सुरक्षित रखता है
सिर्फ़ एक ही ऑरिजिन वाले दस्तावेज़ों को एम्बेड करने की अनुमति दें.
X-Frame-Options: SAMEORIGIN
इस्तेमाल किए जा सकने वाले ब्राउज़र
ज़्यादा जानें
क्रॉस-ऑरिजिन रिसॉर्स पॉलिसी (सीओआरपी)
कोई हमलावर किसी अन्य ऑरिजिन से रिसॉर्स एम्बेड कर सकता है, जैसे कि आपकी साइट से, वेब-आधारित क्रॉस-साइट और लीक न हों.
Cross-Origin-Resource-Policy
, इस जोखिम को कम करने के लिए,
जिन्हें लोड करने की अनुमति होगी. हेडर तीन में से एक वैल्यू लेता है:
same-origin
, same-site
, और cross-origin
. सभी संसाधन
इस हेडर को भेजने का सुझाव दिया जाता है, ताकि यह पता चल सके कि इन्हें
दूसरी वेबसाइटों पर जाएं.
इस्तेमाल के उदाहरण
Cross-Origin-Resource-Policy: same-origin
सुझाए गए इस्तेमाल
हमारा सुझाव है कि सभी संसाधनों को इनमें से किसी एक के साथ दिखाया जाना चाहिए तीन हेडर.
नीचे दिए गए कॉन्फ़िगरेशन,
Cross-Origin-Embedder-Policy: require-corp
वातावरण को
डेमो. इसे बदलें
Cross-Origin-Resource-Policy ड्रॉपडाउन मेन्यू और
इफ़ेक्ट देखने के लिए iframe या इमेज को फिर से लोड करें बटन.
संसाधनों को लोड होने की अनुमति दें cross-origin
हमारा सुझाव है कि सीडीएन जैसी सेवाएं, संसाधनों पर cross-origin
लागू करें
(ऐसा इसलिए होता है, क्योंकि आम तौर पर वे क्रॉस-ऑरिजिन पेजों से लोड होते हैं). हालांकि, ऐसा तब तक होता है, जब तक उन्हें पहले से नहीं दिखाया जाता
CORS के ज़रिए दिखाया जाता है. इसका असर मिलता-जुलता है.
![क्रॉस-ऑरिजिन-रिसॉर्स-नीति: क्रॉस-ऑरिजिन](https://web.dev/static/articles/security-headers/image/cross-origin-resource-pol-365b98767bed6.png?authuser=6&hl=hi)
Cross-Origin-Resource-Policy: cross-origin
same-origin
से संसाधन लोड करने तक सीमित करें
same-origin
को सिर्फ़ लोड किए जाने वाले संसाधनों पर लागू किया जाना चाहिए
एक ही ऑरिजिन वाले पेजों के आधार पर. आपको इसे उन संसाधनों पर लागू करना चाहिए जिनमें संवेदनशील जानकारी शामिल है
उपयोगकर्ता के बारे में जानकारी या उस एपीआई से मिले जवाब जिसे कॉल किया जाना है
जो सिर्फ़ एक ही ऑरिजिन से हैं.
ध्यान रखें कि इस हेडर वाले संसाधन अब भी सीधे लोड किए जा सकते हैं, उदाहरण के लिए, नई ब्राउज़र विंडो में यूआरएल पर जाएं. क्रॉस-ऑरिजिन रिसॉर्स नीति, संसाधन को सिर्फ़ दूसरी वेबसाइटों से एम्बेड किए जाने से बचाती है.
![क्रॉस-ऑरिजिन-रिसॉर्स-नीति: एक ही ऑरिजिन](https://web.dev/static/articles/security-headers/image/cross-origin-resource-pol-27b9213f10fd2.png?authuser=6&hl=hi)
Cross-Origin-Resource-Policy: same-origin
same-site
से संसाधन लोड करने तक सीमित करें
same-site
को उन संसाधनों पर लागू करने का सुझाव दिया जाता है जो ऊपर दिए गए संसाधनों से मिलते-जुलते हैं
लेकिन उन्हें आपकी साइट के अन्य सबडोमेन से लोड किया जा सकता हो.
![क्रॉस-ऑरिजिन-रिसॉर्स-नीति: एक ही साइट](https://web.dev/static/articles/security-headers/image/cross-origin-resource-pol-158905cfe6687.png?authuser=6&hl=hi)
Cross-Origin-Resource-Policy: same-site
इस्तेमाल किए जा सकने वाले ब्राउज़र
ज़्यादा जानें
क्रॉस-ऑरिजिन ओपनर पॉलिसी (सीओओपी)
हमलावर की वेबसाइट, जानकारी देने के लिए पॉप-अप विंडो में दूसरी साइट खोल सकती है इसके बारे में जानकारी इकट्ठा करने के लिए, वेब-आधारित क्रॉस-साइट लीक न हों. कुछ मामलों में, इसकी मदद से बुरे बर्ताव के लिए, साइड-चैनल हमलों का गलत इस्तेमाल अस्पेक्टर.
Cross-Origin-Opener-Policy
हेडर की मदद से, दस्तावेज़ को अलग किया जा सकता है
window.open()
के माध्यम से खोली गई क्रॉस-ऑरिजिन विंडो से या इसके साथ लिंक
rel="noopener"
के बिना target="_blank"
. इस वजह से, कोई भी क्रॉस-ऑरिजिन ओपनर
दस्तावेज़ के पास उसका कोई रेफ़रंस नहीं होगा और उससे इंटरैक्ट नहीं किया जा सकेगा
उसके साथ.
इस्तेमाल के उदाहरण
Cross-Origin-Opener-Policy: same-origin-allow-popups
सुझाए गए इस्तेमाल
नीचे दिए गए कॉन्फ़िगरेशन, इस डेमो पर क्रॉस-ऑरिजिन पॉप-अप विंडो. दोनों दस्तावेज़ के लिए, Cross-Origin-Opener-Policy का ड्रॉपडाउन मेन्यू बदलें पॉप-अप विंडो में, पॉप-अप खोलें बटन पर क्लिक करें. इसके बाद, भेजें postMessage देखें कि क्या मैसेज वाकई डिलीवर हुआ है या नहीं.
क्रॉस-ऑरिजिन विंडो से किसी दस्तावेज़ को अलग करना
same-origin
को सेट करने पर, दस्तावेज़ को क्रॉस-ऑरिजिन से आइसोलेट किया जाता है
दस्तावेज़ विंडो.
![क्रॉस-ऑरिजिन-ओपनर-नीति: एक ही ऑरिजिन](https://web.dev/static/articles/security-headers/image/cross-origin-opener-polic-2d273fc0106eb.png?authuser=6&hl=hi)
Cross-Origin-Opener-Policy: same-origin
क्रॉस-ऑरिजिन विंडो से किसी दस्तावेज़ को अलग करें, लेकिन पॉप-अप को अनुमति दें
same-origin-allow-popups
को सेट करने पर, दस्तावेज़ में रेफ़रंस सेव रहता है
इसकी पॉप-अप विंडो, जब तक कि वे COOP को same-origin
या
same-origin-allow-popups
. इसका मतलब है कि same-origin-allow-popups
अब भी ये काम कर सकता है
पॉप-अप विंडो के तौर पर खोले जाने पर, दस्तावेज़ को रेफ़र करने से सुरक्षित रखें, लेकिन
उसे अपने पॉप-अप से संपर्क करने की अनुमति देता है.
![क्रॉस-ऑरिजिन-ओपनर-नीति: सेम-ऑरिजिन-अनुमति दें](https://web.dev/static/articles/security-headers/image/cross-origin-opener-polic-7311769f30905.png?authuser=6&hl=hi)
Cross-Origin-Opener-Policy: same-origin-allow-popups
किसी दस्तावेज़ को क्रॉस-ऑरिजिन विंडो से रेफ़र करने की अनुमति दें
unsafe-none
डिफ़ॉल्ट मान है लेकिन आप साफ़ तौर पर यह बता सकते हैं कि
दस्तावेज़ को क्रॉस-ऑरिजिन विंडो से खोला जा सकता है और म्युचुअल ऐक्सेस को बनाए रखा जा सकता है.
![क्रॉस-ऑरिजिन-ओपनर-नीति: असुरक्षित-कोई नहीं](https://web.dev/static/articles/security-headers/image/cross-origin-opener-polic-6542ad44c7cdc.png?authuser=6&hl=hi)
Cross-Origin-Opener-Policy: unsafe-none
रिपोर्ट पैटर्न, COOP के साथ काम नहीं करते
जब COOP, क्रॉस-विंडो इंटरैक्शन को रोकता है, तब आपको रिपोर्ट मिल सकती हैं रिपोर्टिंग एपीआई.
Cross-Origin-Opener-Policy: same-origin; report-to="coop"
COOP रिपोर्ट-ओनली मोड में भी काम करता है, ताकि आप बिना रिपोर्ट के रिपोर्ट पा सकें क्रॉस-ऑरिजिन दस्तावेज़ों के बीच के कम्यूनिकेशन को ब्लॉक करती है.
Cross-Origin-Opener-Policy-Report-Only: same-origin; report-to="coop"
इस्तेमाल किए जा सकने वाले ब्राउज़र
ज़्यादा जानें
क्रॉस-ऑरिजिन रिसॉर्स शेयरिंग (सीओआरएस)
इस लेख में दिए गए अन्य आइटम से अलग, क्रॉस-ऑरिजिन रिसॉर्स शेयरिंग (सीओआरएस) एक हेडर होता है, लेकिन एक ब्राउज़र सिस्टम होता है, जो क्रॉस-ऑरिजिन रिसॉर्स.
डिफ़ॉल्ट रूप से, ब्राउज़र इन कामों के लिए एक ही ऑरिजिन से जुड़ी नीति लागू करते हैं किसी वेब पेज को क्रॉस-ऑरिजिन रिसॉर्स ऐक्सेस करने से रोकता है. उदाहरण के लिए, जब किसी क्रॉस-ऑरिजिन इमेज लोड हो जाती है, भले ही वह वेब पेज पर दिखती हो विज़ुअल तौर पर, इस पेज पर मौजूद JavaScript के पास इमेज के डेटा का ऐक्सेस नहीं है. संसाधन उपलब्ध कराने वाली कंपनी, पाबंदियों में रियायत दे सकती है और अन्य वेबसाइटों को सीओआरएस के साथ ऑप्ट-इन करके, इस संसाधन को ऐक्सेस करने का तरीका बताएंगे.
इस्तेमाल के उदाहरण
Access-Control-Allow-Origin: https://example.com
Access-Control-Allow-Credentials: true
सीओआरएस को कॉन्फ़िगर करने का तरीका जानने से पहले, अलग-अलग तरह के अनुरोध शामिल हैं. अनुरोध की जानकारी के आधार पर, उन्हें सामान्य अनुरोध या पहले से किए गए अनुरोध की कैटगरी में रखा जाना चाहिए.
सामान्य अनुरोध के लिए मानदंड:
- तरीका
GET
,HEAD
याPOST
है. - कस्टम हेडर में सिर्फ़
Accept
,Accept-Language
,Content-Language
औरContent-Type
. Content-Type
,application/x-www-form-urlencoded
है,multipart/form-data
याtext/plain
.
बाकी सब कुछ, पहले से किए गए अनुरोध की कैटगरी में आता है. ज़्यादा जानकारी के लिए, क्रॉस-ऑरिजिन रिसॉर्स शेयरिंग (सीओआरएस) - एचटीटीपी | एमडीएन.
सुझाए गए इस्तेमाल
सामान्य अनुरोध
जब कोई अनुरोध सामान्य अनुरोध मानदंड से मेल खाता है, तो ब्राउज़र
Origin
हेडर वाला क्रॉस-ऑरिजिन अनुरोध, जो अनुरोध करने की जानकारी देता है
ऑरिजिन.
अनुरोध के हेडर का उदाहरण
Get / HTTP/1.1 Origin: https://example.com
जवाब वाले हेडर का उदाहरण
Access-Control-Allow-Origin: https://example.com Access-Control-Allow-Credentials: true
Access-Control-Allow-Origin: https://example.com
से पता चलता है किhttps://example.com
जवाब के कॉन्टेंट को ऐक्सेस कर सकता है. संसाधन इस हेडर को*
पर सेट कर सकता है, ताकि कोई भी साइट उसे पढ़ सके. इस स्थिति में, ब्राउज़र को बिना क्रेडेंशियल.Access-Control-Allow-Credentials: true
से पता चलता है कि क्रेडेंशियल (कुकी) को संसाधन लोड करने की अनुमति है. या फिर, पुष्टि किए गए अनुरोधों को अस्वीकार कर दिया जाएगा. भले ही अनुरोध का ऑरिजिन यह होAccess-Control-Allow-Origin
हेडर में मौजूद होता है.
यह देखें कि एक सामान्य से अनुरोध से,
Cross-Origin-Embedder-Policy: require-corp
वातावरण को
डेमो. क्लिक करें
क्रॉस-ऑरिजिन रिसॉर्स शेयरिंग चेकबॉक्स पर क्लिक करें और इमेज को फिर से लोड करें पर क्लिक करें
बटन क्लिक करें.
प्रीफ़्लाइट किए गए अनुरोध
पहले से भेजे जाने वाले अनुरोध से पहले, एक OPTIONS
अनुरोध होता है. इसमें यह जांच की जाती है कि
के बाद अनुरोध भेजने की अनुमति है.
अनुरोध के हेडर का उदाहरण
OPTIONS / HTTP/1.1 Origin: https://example.com Access-Control-Request-Method: POST Access-Control-Request-Headers: X-PINGOTHER, Content-Type
Access-Control-Request-Method: POST
से यह अनुरोध करने की अनुमति मिलती हैPOST
तरीके से.Access-Control-Request-Headers: X-PINGOTHER, Content-Type
आपको इसकी अनुमति देता है अनुरोधकर्ता है कि वहX-PINGOTHER
औरContent-Type
HTTP हेडर को का पालन नहीं करता है.
रिस्पॉन्स हेडर का उदाहरण
Access-Control-Allow-Origin: https://example.com Access-Control-Allow-Credentials: true Access-Control-Allow-Methods: POST, GET, OPTIONS Access-Control-Allow-Headers: X-PINGOTHER, Content-Type Access-Control-Max-Age: 86400
Access-Control-Allow-Methods: POST, GET, OPTIONS
से पता चलता है कि इसके बादPOST
,GET
, औरOPTIONS
तरीकों का इस्तेमाल करके अनुरोध किए जा सकते हैं.Access-Control-Allow-Headers: X-PINGOTHER, Content-Type
बाद के संकेत देता है अनुरोधों मेंX-PINGOTHER
औरContent-Type
हेडर शामिल हो सकते हैं.Access-Control-Max-Age: 86400
बताता है कि प्रीफ़्लाइट किया गया नतीजा अनुरोध को 86,400 सेकंड के लिए कैश मेमोरी में सेव किया जा सकता है.
इस्तेमाल किए जा सकने वाले ब्राउज़र
ज़्यादा जानें
क्रॉस-ऑरिजिन एम्बेडर नीति (सीओईपी)
स्पेक्टर-आधारित टीवी की क्षमता कम करने के लिए
अटैक
क्रॉस-ऑरिजिन रिसॉर्स, जैसे कि SharedArrayBuffer
या
performance.measureUserAgentSpecificMemory()
डिफ़ॉल्ट रूप से बंद होते हैं.
Cross-Origin-Embedder-Policy: require-corp
दस्तावेज़ों और कर्मचारियों को इससे रोकता है
क्रॉस-ऑरिजिन रिसॉर्स लोड करना, जैसे कि इमेज, स्क्रिप्ट, स्टाइलशीट, iframe और
जब तक ये संसाधन साफ़ तौर पर CORS के ज़रिए लोड किए जाने के लिए ऑप्ट इन नहीं करते
या CORP हेडर का इस्तेमाल करें. सीओईपी कोCross-Origin-Opener-Policy
के साथ जोड़ा जा सकता है
ताकि किसी दस्तावेज़ को क्रॉस-ऑरिजिन आइसोलेशन में शामिल किया जा सके.
Cross-Origin-Embedder-Policy: require-corp
का इस्तेमाल तब करें, जब आपको इसे चालू करना हो
आपके दस्तावेज़ के लिए, क्रॉस-ऑरिजिन आइसोलेशन.
इस्तेमाल के उदाहरण
Cross-Origin-Embedder-Policy: require-corp
इस्तेमाल के उदाहरण
सीओईपी में require-corp
वैल्यू होती है. यह हेडर भेजकर, ये काम किए जा सकते हैं
यह ब्राउज़र को उन संसाधनों को लोड होने से रोकने के लिए निर्देश देता है जो इसके ज़रिए ऑप्ट-इन नहीं करते
CORS या CORP.
![सीओईपी के काम करने का तरीका](https://web.dev/static/articles/security-headers/image/how-coep-works-28c183abab5d5.png?authuser=6&hl=hi)
नीचे दिए गए कॉन्फ़िगरेशन की मदद से लोड होने वाले संसाधनों पर, इस डेमो. इसे बदलें Cross-Origin-Embedder-Policy ड्रॉपडाउन मेन्यू, Cross-Origin-Resource-Policy का ड्रॉपडाउन मेन्यू, Cross-Origin-Resource-Policy चेकबॉक्स वगैरह देखा जा सकता है कि वे रिसॉर्स लोड होने पर क्या असर डालती हैं. साथ ही, रिपोर्टिंग एंडपॉइंट खोलें डेमो देखकर पता लगाया जा सकता है कि ब्लॉक किए गए रिसॉर्स रिपोर्ट की गई.
क्रॉस-ऑरिजिन आइसोलेशन चालू करें
भेजकर क्रॉस-ऑरिजिन आइसोलेशन चालू करें
Cross-Origin-Embedder-Policy: require-corp
और
Cross-Origin-Opener-Policy: same-origin
.
Cross-Origin-Embedder-Policy: require-corp Cross-Origin-Opener-Policy: same-origin
सीओईपी के साथ काम न करने वाले संसाधनों की शिकायत करें
आपको रिपोर्टिंग की मदद से, सीओईपी की वजह से ब्लॉक किए गए संसाधनों की रिपोर्ट मिल सकती है एपीआई.
Cross-Origin-Embedder-Policy: require-corp; report-to="coep"
सीओईपी में सिर्फ़ रिपोर्ट वाला मोड भी काम करता है, ताकि आपको बिना किसी खास ज़रूरत के रिपोर्ट मिल सकें लोड होने वाले संसाधनों को ब्लॉक कर रहा है.
Cross-Origin-Embedder-Policy-Report-Only: require-corp; report-to="coep"
इस्तेमाल किए जा सकने वाले ब्राउज़र
ज़्यादा जानें
एचटीटीपी स्ट्रिक्ट ट्रांसपोर्ट सिक्योरिटी (एचएसटीएस)
किसी सादे एचटीटीपी कनेक्शन पर की जाने वाली बातचीत को एन्क्रिप्ट (सुरक्षित) नहीं किया जाता है, जिससे ट्रांसफ़र किया गया ऐसा डेटा जिसे नेटवर्क के ताल्लुक रखने वाले लोग ऐक्सेस कर सकते हैं.
Strict-Transport-Security
हेडर, ब्राउज़र को बताता है कि वह कभी लोड नहीं होना चाहिए
तो उसके बजाय एचटीटीपीएस का इस्तेमाल करें. सेट हो जाने पर, ब्राउज़र
एक तय समय तक बिना रीडायरेक्ट के डोमेन ऐक्सेस करने के लिए, एचटीटीपी के बजाय एचटीटीपीएस
हेडर में तय किया गया है.
इस्तेमाल के उदाहरण
Strict-Transport-Security: max-age=31536000
सुझाए गए इस्तेमाल
एचटीटीपी से एचटीटीपीएस पर ट्रांज़िशन करने वाली सभी वेबसाइटों को
एचटीटीपी वाला अनुरोध मिलने पर Strict-Transport-Security
हेडर.
Strict-Transport-Security: max-age=31536000
इस्तेमाल किए जा सकने वाले ब्राउज़र