الوثائقالاتفاقيات والمفاهيم
الأمن
كيف تحافظ Nexy على حجم سطح الهجوم الخاص بها صغيرًا، والإصدارات التي تتطلبها، وكيفية التحقق من المشروع.
طوابق الإصدار
يعتمد النكسي على FastAPI، Starlette، Jinja2، Vite و React. الأرضية هي أقل إصدار يسمح به Nexy؛ كل واحد يجيب على استشارة منشورة.
| الحزمة | الكلمة | لماذا |
|---|---|---|
starlette |
1.0.1 | CVE-2026-48710 (BadHost): يقوم رأس Host بتغيير مسار التقارير Starlette إلى البرامج الوسيطة، مما يتجاوز التفويض المكتوب على request.url.path. تم إدراجه على أنه مستغل من قبل CISA. |
fastapi |
0.133.0 | الإصدار الأول الذي يقبل ثابت Starlette |
jinja2 |
3.1.6 | الهروب من وضع الحماية من خلال مرشح attr (CVE-2025-27516) |
vite (المشاريع السقالة) |
6.4.3 | server.fs.deny تجاوز المسارات البديلة لنظام التشغيل Windows (CVE-2026-53571)؛ يؤثر تجاوز سلسلة الاستعلام السابقة (CVE-2026-39364) فقط على Vite 7.1-7.3.1 و8.0.0-8.0.4 |
react، react-dom |
19.2.5 | تتعلق تحذيرات 2026 React بالحزم react-server-dom-* التي لا يستخدمها Nexy؛ الأرضية تحافظ على الخط مصححًا |
تحقق من الإصدارات التي تم حلها:
uv pip list | grep -i -E "starlette|fastapi|jinja2"npm ls vite
القواعد التي يتبعها Nexy
- لا تثق أبدًا برأس المضيف للمسارات. يقرأ Nexy
scope["path"]، وليسrequest.url.path، في البرامج الوسيطة الخاصة به (البرامج الوسيطة للدليل). افعل نفس الشيء في ملكك. - الهروب مما يصل إلى HTML. الدعائم التي تم تمريرها إلى مكونات العميل،
Linkالسمات،Image،AudioوالسماتVideo، نقاط ربط جدول المحتويات وتفاصيلHTTPExceptionكلها تم تجاوزها من HTML. لا يمكن الهروب من القالب.nexyمن تلقاء نفسه: اكتب{{ value | e }}لأي قيمة تأتي من الزائر أو قاعدة البيانات، ولا يتم أبدًا| safeعند إدخال المستخدم. - نقاط نهاية المطور هي استرجاع فقط وضيقة. تقبل نقطة نهاية عرض المطورين (
/__nexy__/render) فقط الملفات الموجودة ضمنsrc/routes/ذات الامتداد.tsxأو.jsx، ولا يمكن الوصول إليها إلا من خلال خادم التطوير، الذي يرفض رؤوسHostالأجنبية. - تفاصيل الخطأ لا تتسرب. تظهر صفحة الخطأ التي تفشل نفسها فقط رمز الحالة.
- تحمل إجابات الإنتاج رؤوسًا آمنة.
X-Content-Type-Options: nosniffوReferrer-Policy: strict-origin-when-cross-origin، ما لم يحدد الكود الخاص بك خاصًا به. لم يتم إرسال رأسServer. أضفStrict-Transport-SecurityوContent-Security-Policyفي الوكيل أو البرنامج الوسيط الخاص بك: يعتمدان على المجال الخاص بك. - يظهر العطل مرجعًا، وليس الخطأ. راجع صفحات الخطأ.
- لا يوجد
evalولاshell=Trueفي كود Nexy Python. تعمل البرامج الخارجية بقائمة الوسائط.
تشغيل عمليات التدقيق
python scripts/audit_dependencies.py # Python dependencies against the locknpm audit # in a scaffolded projectuv run bandit -r nexy -c .bandit # static analysis of Nexy itself
يقوم مستودع Nexy الخاص بتشغيل الأول والثالث في عمليات التحقق الخاصة به. يتم التعامل مع الاستشارة الجديدة في الطابق العلوي عن طريق رفع الأرضية في pyproject.toml أو في السقالة package.json، ثم إعادة إنشاء القفل.
النشر بأمان
- اضبط
useTrustedHostعلى نطاقاتك: فهو يرفض رؤوسHostغير المتوقعة قبل أي مسار. - لا تكشف خادم التطوير Vite:
nx devيبقيه في حالة استرجاع خلف أصل Nexy. - قم بتعيين
useDocs = Falseإذا كان مخطط واجهة برمجة التطبيقات (API) لا يجب أن يكون عامًا.
انظر البرامج الوسيطة والأمان.
المصادر
- CVE-2026-48710 (BadHost) في Starlette
- Vite الاستشارة GHSA-fx2h-pf6j-xcff و GHSA-v2wj-q39q-566r
- Jinja2 CVE-2025-27516
- React حزم الخادم CVE-2026-44907