Nginx में किए गए बदलावों की खास जानकारी
Apigee Edge for Private Cloud 4.54.00 में, Edge राऊटर पर Nginx के वर्शन 1.30 पर अपग्रेड करना ज़रूरी है.
Nginx 1.26 के रिलीज़ होने के बाद, सुरक्षा को बेहतर बनाने और एचटीटीपी मानकों के मुताबिक काम करने के लिए, कई अहम बदलाव किए गए हैं. यहां कुछ मुख्य अपडेट दिए गए हैं:
हेडर के नामों और वैल्यू में खाली सफ़ेद जगह को मैनेज करना
सुरक्षा को बेहतर बनाने के लिए, आरएफ़सी 7230 के नियमों का पालन करना ज़रूरी है. खास तौर पर, हेडर में खाली सफ़ेद जगह को मैनेज करने से जुड़े नियमों का पालन करना ज़रूरी है. इन बदलावों के बारे में ज़्यादा जानकारी, अपेंडिक्स में देखी जा सकती है.
Content-Length और Transfer-Encoding हेडर को मैनेज करना
अनुरोध स्मगलिंग के हमलों में इस्तेमाल की जाने वाली एक आम तकनीक में, Content-Length और Transfer-Encoding दोनों हेडर के साथ एचटीटीपी अनुरोध भेजना शामिल है. Apigee Edge को पहले ही इस तरह के हमलों से सुरक्षित किया जा चुका है. हालांकि, अब Nginx उन अनुरोधों को साफ़ तौर पर ब्लॉक करता है जिनमें दोनों हेडर शामिल होते हैं. अगर ऐसा कोई अनुरोध भेजा जाता है, तो Nginx गड़बड़ी 400: गलत अनुरोध का मैसेज दिखाएगा.
इस्तेमाल किए जा सकने वाले सिफ़र
इस रिलीज़ के साथ, नॉर्थबाउंड अनुरोधों के लिए इस्तेमाल किए जा सकने वाले सिफ़र की सूची में बदलाव हो सकता है. उपलब्ध सिफ़र की अपडेट की गई सूची पाने के लिए, अपने राऊटर होस्ट पर OpenSSL के साथ काम करने वाले सिफ़र देखें.
इस्तेमाल की जा सकने वाली कुंजी के साइज़
पहले, 2048 बिट से छोटी आरएसए, डीएसए, और डीएच कुंजियों के साथ-साथ 224 बिट से छोटी ईसीसी कुंजियों को डिफ़ॉल्ट रूप से स्वीकार किया जाता था. हालांकि, इस अपडेट के बाद, नॉर्थबाउंड अनुरोधों के लिए, एकतरफ़ा और दोतरफ़ा, दोनों तरह के टीएलएस कनेक्शन के लिए, इन कुंजियों का इस्तेमाल नहीं किया जा सकेगा.
अपेंडिक्स
हेडर में खाली सफ़ेद जगह
इसमें तीन मुख्य बदलाव किए गए हैं:
- Nginx 1.26 में, हेडर के कुछ ऐसे नामों का इस्तेमाल नहीं किया जा सकता जिन्हें पहले इस्तेमाल किया जा सकता था. इन हेडर के साथ किए गए अनुरोधों के लिए, गड़बड़ी 400: गलत अनुरोध का मैसेज दिखेगा.
- Nginx 1.26 में, हेडर की कुछ ऐसी वैल्यू का इस्तेमाल नहीं किया जा सकता जिन्हें पहले इस्तेमाल किया जा सकता था. इन हेडर के साथ किए गए अनुरोधों के लिए भी, गड़बड़ी 400: गलत अनुरोध का मैसेज दिखेगा.
- Nginx पहले कुछ ऐसे हेडर स्वीकार करता था जिनकी वजह से, मैसेज प्रोसेसर में गड़बड़ियां होती थीं. हालांकि, अब Nginx सीधे तौर पर इन हेडर को अस्वीकार करता है. हालांकि, इन हेडर की वजह से अब भी एपीआई में गड़बड़ियां होंगी, लेकिन एचटीटीपी गड़बड़ी के मैसेज बदल जाएंगे.
यहां दिए गए सेक्शन में, हेडर के अलग-अलग नामों और हेडर की वैल्यू के उदाहरण दिए गए हैं जिनका इस्तेमाल नहीं किया जा सकता. ये सिर्फ़ उदाहरण हैं. ऐसा हो सकता है कि सूची में और भी उदाहरण शामिल हों. हमारा सुझाव है कि हेडर के लिए, आरएफ़सी 7230 के दिशा-निर्देशों का पालन करें.
हेडर के नामों में बदलाव
इस सेक्शन में, हेडर के उन नामों की सूची दी गई है जिन्हें Nginx 1.20.1 में इस्तेमाल किया जा सकता था, लेकिन अब Nginx 1.26 में इस्तेमाल नहीं किया जा सकता.
| स्थिति | हेडर के नामों के उदाहरण |
|---|---|
| हेडर के नाम की शुरुआत, बीच में या आखिर में कंट्रोल वर्ण होना | { '\u0001'Header0, Value0 } { Header6'\u0002', Value6 } { Header'\u0005'4, Value4 } |
| हेडर के नाम की शुरुआत और आखिर में खाली सफ़ेद जगह होना | {"Header2 ", "Value2"} {" Header3", "Value3"} {" Header4 ", "Value4"} |
| हेडर के नाम की शुरुआत और आखिर में एचटीएबी होना | {"\tHeader11", "Value11"} {"Header12\t", "Value12"} {"\tHeader13\t", "Value13"} |
| हेडर के नाम की शुरुआत और आखिर में एचटीएबी और डब्ल्यूएस का कॉम्बिनेशन होना | {"\t Header24", "Value24"} {" \tHeader25", "Value25"} {"Header26 \t", "Value26"} {"Header27\t ", "Value27"} |
| हेडर के नाम के बीच में नई लाइन (\n) के तुरंत बाद डब्ल्यूएस या डब्ल्यूएस की सीरीज़ होना | {"Header\n 57Mutiline", "Value57"} {"Header\n 58Mutiline", "Value58"} |
| हेडर के नाम के बीच में नई लाइन (\n) के तुरंत बाद एचटीएबी या एचटीएबी की सीरीज़ होना | {"Header\n\t73", "Value73"} {"Header\n\t\t74", "Value74"} |
| हेडर के नाम के बीच में नई लाइन शुरू करने का चिह्न ( ) न्यूलाइन ( ) के तुरंत बाद एचटीएबी या एचटीएबी की सीरीज़ होना | {"Header\r\n\t69", "Value69"} {"Header\r\n\t\t70", "Value70"} |
| हेडर के नाम के बीच में नई लाइन शुरू करने का चिह्न ( ) नई लाइन ( ) के तुरंत बाद डब्ल्यूएस या डब्ल्यूएस की सीरीज़ होना | {"Header\r\n 71", "Value71"} {"Header\r\n 72", "Value72"} |
हेडर की वैल्यू में बदलाव
इस सेक्शन में, हेडर की उन वैल्यू के बारे में बताया गया है जिन्हें Nginx 1.20.1 में इस्तेमाल किया जा सकता था, लेकिन अब Nginx 1.26 में इस्तेमाल नहीं किया जा सकता.
| स्थिति | उदाहरण |
|---|---|
| HEADERVALUE के बीच में \r\n या \r\n के साथ डब्ल्यूएस या एचटीएबी का कॉम्बिनेशन इस्तेमाल किया जा सकता है |
{"Header47", "Value47\r\n MultiLine"}, {"Header48", "Value48\r\n MultiLine"}, {"Header49b", "Value49b\r\n \r\nMultiLine"}, {"Header50", "Value50 \r\n MultiLine"}, {"Header51", "Value51\r\n\tMultiLine"}, {"Header52", "Value52\r\n\t\tMultiLine"}, {"Header53", "Value53\t\r\n\tMultiLine"} |
| HEADERVALUE के बीच में \n या \n के साथ डब्ल्यूएस या एचटीएबी का कॉम्बिनेशन इस्तेमाल किया जा सकता है |
{"Header61", "Value\n 61Multiline"}, {"Header62", "Value\n 63Multiline"}, {"Header65", "Value\n\t65"}, {"Header66", "Value\n\t\t66"}, {"Header67", "Value\n 67"}, {"Header68", "Value\n 68"} |
एचटीटीपी गड़बड़ी के रिस्पॉन्स में बदलाव
इस सेक्शन में, उन हेडर के बारे में बताया गया है जिन्हें Nginx के पुराने वर्शन में इस्तेमाल किया जा सकता था, लेकिन अपस्ट्रीम मैसेज प्रोसेसर ने उन्हें अस्वीकार कर दिया. इस वजह से, स्टेटस कोड 400 मिला. हालांकि, Nginx 1.26 में, इन हेडर की वजह से Nginx में सीधे तौर पर गड़बड़ियां होती हैं. इस वजह से, अनुरोध को मैसेज प्रोसेसर को फ़ॉरवर्ड नहीं किया जा सकता.
ऐसे हेडर भेजने वाले क्लाइंट के लिए, एचटीटीपी स्टेटस कोड 400 ही रहेगा. हालांकि, एचटीटीपी रिस्पॉन्स बॉडी में बदलाव हो सकता है, क्योंकि अब गड़बड़ी का मैसेज, मैसेज प्रोसेसर के बजाय Nginx जनरेट करेगा.
| स्थिति | उदाहरण |
|---|---|
| HEADERNAME के बीच में एचटीएबी या डब्ल्यूएस होना
मैसेज प्रोसेसर, ऐसे अनुरोधों को अस्वीकार कर देता है. Nginx 1.26 में, इन अनुरोधों को Nginx ही अस्वीकार कर देगा. एपीआई का इस्तेमाल करने वाले व्यक्ति को, बॉडी में Nginx के गड़बड़ी वाले मैसेज के साथ, गड़बड़ी 400 का रिस्पॉन्स मिलेगा. |
{"Header 5", "Value5"}, {"Header\t14", "Value14"}, {"Header\t 32", "Value32"}, {"Header \t33", "Value33"}, {"Header- 36", "Value36"}, {"Header-\t40", "Value40"}, {"Header 4a", "Value4a"}, {"Header\t 59", "Value59"}, {"Header\t 60", "Value60"} |