Nginx 1.26 পরিবর্তনের ওভারভিউ
Nginx 1.26 প্রকাশের সাথে সাথে, নিরাপত্তা বাড়াতে এবং HTTP মানগুলির সাথে সম্মতি নিশ্চিত করতে বেশ কিছু গুরুত্বপূর্ণ পরিবর্তন আনা হয়েছে। নিম্নলিখিত মূল আপডেটগুলি হল:
হেডারের নাম এবং মানগুলিতে হোয়াইটস্পেস পরিচালনা করা
নিরাপত্তা উন্নত করার জন্য, RFC 7230-এর আনুগত্য জোরদার করা হয়েছে, বিশেষ করে হেডারে হোয়াইটস্পেস পরিচালনার ক্ষেত্রে। এই পরিবর্তনগুলি সম্পর্কে আরও বিশদ পরিশিষ্টে পাওয়া যাবে।
Content-Length
এবং Transfer-Encoding
শিরোনাম পরিচালনা করা
অনুরোধ চোরাচালান আক্রমণে ব্যবহৃত সাধারণ কৌশলগুলির মধ্যে একটি হল Content-Length
এবং Transfer-Encoding
শিরোনাম উভয়ের সাথে HTTP অনুরোধ পাঠানো। Apigee Edge ইতিমধ্যেই এই ধরনের আক্রমণের বিরুদ্ধে সুরক্ষিত ছিল, Nginx এখন স্পষ্টভাবে অনুরোধগুলিকে ব্লক করে যা উভয় শিরোনাম রয়েছে। যদি এই ধরনের একটি অনুরোধ পাঠানো হয়, Nginx একটি 400 খারাপ অনুরোধ ত্রুটির সাথে প্রতিক্রিয়া জানাবে।
সমর্থিত সাইফার
উত্তরমুখী অনুরোধের জন্য সমর্থিত সাইফারের তালিকা এই প্রকাশের সাথে পরিবর্তিত হতে পারে। উপলব্ধ সাইফারগুলির আপডেট তালিকা পেতে আপনি আপনার রাউটার হোস্টে OpenSSL দ্বারা সমর্থিত সাইফারগুলি পরীক্ষা করতে পারেন৷
সমর্থিত কী মাপ
পূর্বে, 2048 বিটের থেকে ছোট RSA, DSA, এবং DH কীগুলি এবং 224 বিটের থেকে ছোট ECC কীগুলি ডিফল্টরূপে গ্রহণ করা হত। যাইহোক, এই আপডেটের সাথে, উত্তরমুখী অনুরোধের জন্য একমুখী এবং দ্বি-মুখী উভয় TLS সংযোগের জন্য এই ধরনের কীগুলি আর অনুমোদিত হবে না।
পরিশিষ্ট
হেডারে হোয়াইটস্পেস
তিনটি প্রাথমিক পরিবর্তন আছে:
- কিছু হেডার নাম যা পূর্বে অনুমোদিত ছিল এখন Nginx 1.26 দ্বারা অনুমোদিত নয়। এই শিরোনামগুলির সাথে অনুরোধের ফলে একটি 400টি খারাপ অনুরোধ ত্রুটি দেখা দেবে৷
- কিছু হেডার মান যা পূর্বে অনুমোদিত ছিল এখন Nginx 1.26 দ্বারা অনুমোদিত নয়। এই শিরোনামগুলির সাথে অনুরোধের ফলে একটি 400টি খারাপ অনুরোধ ত্রুটি দেখা দেবে৷
- কিছু শিরোনাম যা পূর্বে Nginx দ্বারা গৃহীত হয়েছিল কিন্তু বার্তা প্রসেসরের নিচের দিকে ব্যর্থতার সৃষ্টি করেছিল এখন Nginx দ্বারা সরাসরি প্রত্যাখ্যান করা হয়েছে। যদিও এই শিরোনামগুলি এখনও API ব্যর্থতার দিকে পরিচালিত করে, HTTP ব্যর্থতার বার্তাগুলি পরিবর্তন হবে।
নীচের বিভাগটি বিভিন্ন হেডারের নাম এবং হেডার মানগুলির উদাহরণ প্রদান করে যা অননুমোদিত। এগুলি শুধুমাত্র উদাহরণ এবং একটি সম্পূর্ণ তালিকা নাও হতে পারে৷ হেডারের জন্য RFC 7230-এর নির্দেশিকা মেনে চলার পরামর্শ দেওয়া হচ্ছে।
হেডার নাম পরিবর্তন
এই বিভাগে Nginx 1.20.1-এ অনুমোদিত বিভিন্ন শিরোনামের নাম তালিকাভুক্ত করা হয়েছে কিন্তু এখন Nginx 1.26-এ অনুমোদিত নয়।
দৃশ্যকল্প | হেডার নামের উদাহরণ |
---|---|
শুরুতে, শেষে বা হেডার নামের মধ্যে অক্ষর নিয়ন্ত্রণ করুন | {'\u0001'Header0, Value0 } { হেডার6'\u0002', মান6 } { হেডার'\u0005'4, মান4 } |
শিরোলেখের নামে অগ্রণী এবং পিছনের হোয়াইটস্পেস | {"Header2", "Value2"} {" Header3", "Value3"} {" Header4 ", "Value4"} |
হেডারের নামে HTAB-এর অগ্রগামী ও পিছনে | {"\tHeader11", "Value11"} {"Header12\t", "Value12"} {"\tহেডার13\t", "মান13"} |
হেডার নামে HTAB, WS-এর লিডিং এবং ট্রেইলিং কম্বিনেশন | {"\t হেডার24", "মান 24"} {" \tHeader25", "Value25"} {"Header26 \t", "Value26"} {"Header27\t", "Value27"} |
হেডার নামের মধ্যে নিউলাইন (\n) অবিলম্বে WS বা WS-এর একটি সিরিজ অনুসরণ করে | {"Header\n 57Mutiline", "Value57"} {"হেডার\n 58Mutiline", "Value58"} |
নতুন লাইন (\n) শিরোনাম নামের মধ্যে অবিলম্বে HTAB বা HTAB-এর একটি সিরিজ অনুসরণ করে | {"হেডার\n\t73", "মান73"} {"হেডার\n\t\t74", "মান74"} |
হেডার নামের মধ্যে ক্যারেজ রিটার্ন (\r) নিউলাইন (\n) অবিলম্বে HTAB বা HTAB-এর একটি সিরিজ অনুসরণ করে | {"হেডার\r\n\t69", "Value69"} {"হেডার\r\n\t\t70", "মান70"} |
হেডার নামের মধ্যে ক্যারেজ রিটার্ন (\r) নিউলাইন (\n) অবিলম্বে WS বা WS-এর একটি সিরিজ অনুসরণ করে | {"হেডার\r\n 71", "মান71"} {"হেডার\r\n 72", "মান72"} |
হেডার মান পরিবর্তন
এই বিভাগটি বিভিন্ন হেডার মান দেখায় যা Nginx 1.20.1-এ অনুমোদিত কিন্তু Nginx 1.26-এ অনুমোদিত নয়।
দৃশ্যকল্প | উদাহরণ |
---|---|
\r\n বা WS বা HTAB এর সাথে \r\n এর সমন্বয় HEADERVALUE এর মধ্যে অনুমোদিত | {"Header47", "Value47\r\n মাল্টিলাইন"}, {"Header48", "Value48\r\n MultiLine"}, {"Header49b", "Value49b\r\n \r\nMultiLine"}, {"Header50", "Value50 \r\n মাল্টিলাইন"}, {"Header51", "Value51\r\n\tMultiLine"}, {"Header52", "Value52\r\n\t\tMultiLine"}, {"Header53", "Value53\t\r\n\tMultiLine"} |
\n বা WS বা HTAB এর সাথে \n এর সমন্বয় HEADERVALUE এর মধ্যে অনুমোদিত৷ | {"Header61", "Value\n 61Multiline"}, {"Header62", "Value\n 63Multiline"}, {"হেডার65", "মান\n\t65"}, {"হেডার66", "মান\n\t\t66"}, {"হেডার67", "মান\n 67"}, {"হেডার68", "মান\n 68"} |
HTTP ব্যর্থতা প্রতিক্রিয়া পরিবর্তন
এই বিভাগে হেডারগুলি কভার করে যা পুরানো Nginx দ্বারা অনুমোদিত ছিল কিন্তু আপস্ট্রিম বার্তা প্রসেসর দ্বারা প্রত্যাখ্যান করা হয়েছে, যার ফলে একটি 400 স্ট্যাটাস কোড রয়েছে। যাইহোক, Nginx 1.26-এ, এই ধরনের শিরোনামগুলি সরাসরি Nginx-এ ব্যর্থতার কারণ হয়, অনুরোধটিকে বার্তা প্রসেসরে ফরওয়ার্ড করা থেকে বাধা দেয়।
ক্লায়েন্টদের জন্য যারা এই ধরনের হেডার পাঠায়, HTTP স্ট্যাটাস কোড 400 থাকবে। তবে, HTTP প্রতিক্রিয়া বডি পরিবর্তন হতে পারে কারণ ব্যর্থতা এখন বার্তা প্রসেসরের পরিবর্তে Nginx দ্বারা তৈরি করা হবে।
দৃশ্যকল্প | উদাহরণ |
---|---|
HEADERNAME এর মধ্যে HTAB বা WS৷ বার্তা প্রসেসর এই ধরনের অনুরোধ প্রত্যাখ্যান করে। Nginx 1.26 এর সাথে, এই অনুরোধগুলি Nginx নিজেই প্রত্যাখ্যান করবে। এপিআই গ্রাহক শরীরে একটি Nginx ত্রুটি বার্তা সহ একটি 400 ত্রুটি প্রতিক্রিয়া পাবেন। | {"হেডার 5", "মান 5"}, {"Header\t14", "Value14"}, {"Header\t 32", "Value32"}, {"হেডার \t33", "মান ৩৩"}, {"হেডার- 36", "মান 36"}, {"Header-\t40", "Value40"}, {"Header 4a", "Value4a"}, {"Header\t 59", "Value59"}, {"Header\t 60", "Value60"} |