Actix Web؛ پشتیبانی از HTTP QUERY و رفع آسیب‌پذیری‌ها در گزارش Q4

چرا مهم است

اگر با Actix Web کار می‌کنی، این گزارش فقط درباره قابلیت‌های تازه نیست؛ چند آسیب‌پذیری در پردازش درخواست و ارائه فایل هم رفع شده‌اند. تغییرهای middleware و مصرف حافظه نیز می‌توانند برای کاربرد فعلی تو مرتبط باشند.

قبل از خواندن، این‌ها را بدان۴ مفهوم
middleware

بخشی در مسیر پردازش درخواست و پاسخ که می‌تواند پیش یا پس از handler رفتارهایی مانند بررسی دسترسی یا تغییر پاسخ را اجرا کند.

بیشتر: middleware

Graceful Shutdown

فرایند توقف برنامه که به کارهای در حال اجرا فرصت پایان می‌دهد، به‌جای اینکه همه آن‌ها را بلافاصله قطع کند.

در حال نگارش: Graceful Shutdown

Decompression

بازگرداندن داده فشرده به شکل قابل استفاده؛ اندازه داده حاصل ممکن است بسیار بیشتر از ورودی فشرده باشد.

در حال نگارش: Decompression

Stored XSS

آسیب‌پذیری‌ای که در آن محتوای مخرب ذخیره می‌شود و بعد هنگام نمایش به کاربر، در browser او به‌عنوان script اجرا می‌شود.

در حال نگارش: Stored XSS

گزارش Q4 اکوسیستم Actix از بیش از ۱۰۰ انتشار crate خبر می‌دهد که قابلیت‌های تازه، اصلاحات امنیتی و بهبود عملکرد و مصرف منابع را در بر می‌گیرند. پشتیبانی از HTTP QUERY،؜ تغییر رفتار پیش‌فرض اتصال‌ها و انعطاف بیشتر در ارائه فایل‌های static از محورهای این گزارش هستند.

در Actix Web،؜ متد HTTP QUERY هم در macro‌های route و هم در تعریف دستی route پشتیبانی می‌شود. برای تعریف handler می‌توان از ‎#[query] یا web::query() استفاده کرد؛ متدهای متناظر در awc نیز پشتیبانی سمت client را تکمیل می‌کنند. گزارش، Actix Web را نخستین framework جریان اصلی معرفی می‌کند که این متد را به‌صورت یک قابلیت اصلی پشتیبانی می‌کند.

برای middleware نیز Error::add_response_mapper() اضافه شده است. این API اجازه می‌دهد پاسخ‌های تولیدشده از خطا، پیش از رسیدن به client تغییر کنند. middleware مربوط به CORS همین حالا از آن برای رفع یک bug قدیمی استفاده می‌کند.

ارائه فایل‌های static هم تغییر کرده است: Files::new() اکنون چند مسیر ریشه را می‌پذیرد و Files::try_compressed() امکان ارائه فایل‌های ازپیش‌فشرده‌شده را فراهم می‌کند. درخواست‌های Range،؜ پاسخ‌های شرطی و ETag در Windows نیز اصلاحاتی دریافت کرده‌اند.

در بخش منابع، گزارش از کاهش مصرف حافظه تا حدود ۹۹ درصد برای بعضی workload‌ها خبر می‌دهد؛ این عدد به همه کاربردها تعمیم داده نشده است. اتصال‌های بیکار حافظه کمتری نگه می‌دارند و پاسخ‌های بزرگ در HTTP/1.x با کپی‌های کمتری پردازش می‌شوند. Graceful Shutdown تضمین‌های قوی‌تری دارد و مسیرهای بیشتری از نوشتن vectored روی socket استفاده می‌کنند. h2c خودکار و TCP no-delay نیز پیش‌فرض شده‌اند؛ طبق گزارش، این تغییرها deployment پشت reverse proxy را کارآمدتر و تأخیر stream‌ها را بسیار کمتر می‌کنند.

اصلاحات امنیتی شامل اعمال محدودیت‌های extractor بر payload درخواست پس از Decompression خودکار و غیرفعال‌کردن Decompression با large-window در Brotli است. parser درخواست HTTP اکنون پایان‌دهنده‌های نامعتبر chunked را رد می‌کند. همچنین جلوگیری از Stored XSS با نام فایل‌های غیرمعمولِ تحت کنترل کاربر و رفع دورزدن محافظت فایل‌های مخفی در Windows گزارش شده است. محدودیت‌های parsing در multipart و اعتبارسنجی HTTP و WebSocket نیز اصلاح شده‌اند.

گزارش به کسانی که مدتی به‌روزرسانی نکرده‌اند توصیه می‌کند lockfile را بررسی کنند و دستور cargo update -p=actix-web را برای به‌روزرسانی در نظر بگیرند.

نکته کلیدی

اگر مدتی Actix Web را به‌روز نکرده‌ای، طبق توصیه گزارش lockfile را بررسی کن و cargo update -p=actix-web را در نظر بگیر. کاهش حدود ۹۹ درصدی حافظه را هم نتیجه‌ای برای بعضی workload‌ها بدان، نه وعده‌ای برای همه کاربردها.

خواندن مقاله اصلی (در زبانه‌ی جدید باز می‌شود)
برچسب‌ها (۴)