Nginx 1.26 में हुए बदलावों के बारे में खास जानकारी
Nginx 1.26 के रिलीज़ होने के साथ, सुरक्षा को बेहतर बनाने और एचटीटीपी स्टैंडर्ड का पालन करने के लिए कई अहम बदलाव किए गए हैं. यहां कुछ मुख्य अपडेट दिए गए हैं:
हेडर के नाम और वैल्यू में स्पेस को मैनेज करना
सुरक्षा को बेहतर बनाने के लिए, RFC 7230 का पालन करने की प्रक्रिया को बेहतर बनाया गया है. खास तौर पर, हेडर में खाली जगह को मैनेज करने के लिए. इन बदलावों के बारे में ज़्यादा जानकारी, अनुबंध में मिल सकती है.
Content-Length
और Transfer-Encoding
हेडर को हैंडल करना
अनुरोध तस्करी के हमलों में इस्तेमाल की जाने वाली आम तकनीकों में से एक, Content-Length
और Transfer-Encoding
, दोनों हेडर के साथ एचटीटीपी अनुरोध भेजना है. Apigee Edge को पहले से ही इस तरह के हमलों से सुरक्षित किया गया था. हालांकि, Nginx अब उन अनुरोधों को साफ़ तौर पर ब्लॉक कर देता है जिनमें दोनों हेडर शामिल होते हैं. अगर ऐसा अनुरोध भेजा जाता है, तो Nginx 400 गलत अनुरोध गड़बड़ी का कोड दिखाएगा.
इस्तेमाल किए जा सकने वाले सिफर
इस रिलीज़ के साथ, नॉर्थबाउंड अनुरोधों के लिए काम करने वाले सिफर की सूची बदल सकती है. उपलब्ध सिफर की अपडेट की गई सूची देखने के लिए, अपने राउटर होस्ट पर OpenSSL के साथ काम करने वाले सिफर देखे जा सकते हैं.
इस्तेमाल किए जा सकने वाले पासकोड के साइज़
पहले, 2048 बिट से कम की आरएसए, डीएसए, और डीएच कुंजियों और 224 बिट से कम की ईसीसी कुंजियों को डिफ़ॉल्ट रूप से स्वीकार किया जाता था. हालांकि, इस अपडेट के बाद, नॉर्थबाउंड अनुरोधों के लिए, एकतरफ़ा और दोतरफ़ा, दोनों तरह के TLS कनेक्शन के लिए ऐसी कुंजियों की अनुमति नहीं होगी.
अन्य जानकारी
हेडर में खाली जगह
इसमें तीन मुख्य बदलाव हुए हैं:
- 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"} |
हेडर के नाम में शुरुआत और आखिर में HTAB होना | {"\tHeader11", "Value11"} {"Header12\t", "Value12"} {"\tHeader13\t", "Value13"} |
हेडर के नाम में HTAB और WS के शुरुआती और आखिरी कॉम्बिनेशन | {"\t Header24", "Value24"} {" \tHeader25", "Value25"} {"Header26 \t", "Value26"} {"Header27\t ", "Value27"} |
हेडर के नाम के बीच में NewLine (\n) और उसके बाद WS या WS की सीरीज़ | {"Header\n 57Mutiline", "Value57"} {"Header\n 58Mutiline", "Value58"} |
हेडर के नाम के बीच NewLine (\n) और उसके तुरंत बाद HTAB या HTAB की सीरीज़ | {"Header\n\t73", "Value73"} {"Header\n\t\t74", "Value74"} |
हेडर के नाम के बीच में कैरिज रिटर्न (\r) न्यूलाइन (\n) और उसके तुरंत बाद HTAB या HTAB की सीरीज़ | {"Header\r\n\t69", "Value69"} {"Header\r\n\t\t70", "Value70"} |
हेडर के नाम के बीच में कैरिज रिटर्न (\r) न्यूलाइन (\n) और उसके बाद तुरंत WS या WS की सीरीज़ | {"Header\r\n 71", "Value71"} {"Header\r\n 72", "Value72"} |
हेडर वैल्यू में बदलाव
इस सेक्शन में, हेडर की अलग-अलग वैल्यू दिखाई गई हैं. इन वैल्यू को Nginx 1.20.1 में इस्तेमाल करने की अनुमति थी, लेकिन Nginx 1.26 में इनका इस्तेमाल नहीं किया जा सकता.
स्थिति | उदाहरण |
---|---|
HEADERVALUE के बीच में, \r\n या WS या HTAB के साथ \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 या WS या HTAB के साथ \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 के बीच HTAB या WS
मैसेज प्रोसेसर ऐसे अनुरोधों को अस्वीकार कर देता है. Nginx 1.26 में, Nginx खुद ही इन अनुरोधों को अस्वीकार कर देगा. एपीआई कंज्यूमर को 400 गड़बड़ी का रिस्पॉन्स मिलेगा. इसमें, बॉडी में Nginx गड़बड़ी का मैसेज होगा. |
{"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"} |