اعتبارات الأمان JScript

كتابة التعليمات البرمجية آمنة هو مطالبة بأي لغة. Jscriptتتضمن عدة نواحي الموقع المطورين قد unknowingly استخدام اللغة بطريقة اﻷمن لأن اللغة لا تفرض المطورين إلى استخدام الممارسات الأكثر فعال. على الرغم من أن Jscriptفقد تم تصميم بالأمان كهدف، هدف الأساسي الخاص به هو لترويج التطوير السريع لتطبيقات مفيدة. في بعض الحالات، تكون هذه الأهداف الثاني في شهادة.

يمكنك تجنب مشكلات إذا كنت على علم بالمشاكل المحتملة في عدة نواح رئيسية المسرودة أدناه. اعتبارات الأمان هذه، باستثناء evalالأسلوب، استحقاق إلى الوظائف الجديدة التي .NET Frameworkيقدم.

أسلوب eval

ميزة الخاطئة بسهولة من Jscriptهو evalأسلوب، مما يسمح بتنفيذ ديناميكي Jscriptتعليمات برمجية المصدر. لأن Jscriptتطبيق الذي يستخدم evalقد يقوم أسلوب بتنفيذ تعليمات برمجية أي برنامج يعمل على تمرير إلى عليها، كل استدعاء إلى evalيتظاهر أسلوب مخاطرة في الأمان. إلا إذا كان تطبيق الخاص بك تتطلب المرونة في تنفيذ أية تعليمات برمجية، خذ بعين الاعتبار وضوح كتابة التعليمات البرمجية أن يمرر تطبيق إلى evalأسلوب.

لزيادة الأمان للتطبيقات التي تتطلب المرونة الكاملة المتوفرة من قبل evalالطريقة، التعليمة البرمجية التي تم تمريرها إلى evalيعمل ضمن سياق مقيد ب الافتراضي. ‏‏سياق الأمان مقيد يمنع الجميع حقوق الوصول إلى موارد النظام، مثل كـ نظام الملفات، وشبكة الاتصال، أو واجهة مستخدم. استثناء هو المنشأة إذا التعليمة البرمجية لمحاولات الوصول إلى هذه موارد. ومع ذلك، تشغيل تعليمات برمجية بواسطة evalمازال يمكن تعديل أسلوب العمومية والمحلية المتغيرات. للحصول على مزيد من المعلومات، راجع أسلوب eval .

تعليمات برمجية في الإصدارات السابقة من Jscriptقد تتطلب evalأسلوب إلى تشغيل تعليمات برمجية في نفس سياق نص الأمان كاستدعاء تعليمات برمجية. لتمكين هذا سلوك، يمكنك pكـs السلسلة "غير امنه" كـ المعلمة الاختيارية الثانية إلى evalالأسلوب. يجب أن تقوم بتنفيذ فقط تعليمات برمجية سلاسل تم الحصول عليها من المصادر معروفة لأنه في الوضع "غير امنه" ينفذ سلسلة تعليمات برمجية باستخدام نفس الأذونات مثل استدعاء تعليمات برمجية.

السمات الأمان

السمات الأمان .NET Frameworkيمكن استخدامها بشكل صريح يمنع إعدادات الأمان الافتراضية في Jscript. However, the الأمان افتراضيات should not be ‏‏تاريخ التعديل unless you know exactly what you are doing. في particular, واحد thing that you should not يطبق هو the AllowPartiallyTrustedCallers سمة (APTCA) مخصص سمة because غير موثوق به callers cannot safely يتصل Jscript تعليمات برمجية, في عام. إذا قمت بإنشاء تجميع موثوق به مع APTCA الذي يتم تحميله ثم من قبل تطبيق ما، موثوق به جزئيا الطالب الوصول إلى التجميعات موثوق به ثقة كاملة في التطبيق. لمزيد من المعلومات، راجع تأمين ترميز إرشادات.

Partially موثوق به تعليمات برمجية و Hosted JScript تعليمات برمجية

The engine which hosts Jscript allows أي called تعليمات برمجية إلى تعديل parts of the engine, such كـ عمومي متغيرات, محلي متغيرات, و نموذج أولي chains of أي كائن. في addition, أي دالة can تعديل the expando خصائص أو وظائف of أي expando كائن passed إلى it. وبالتالي، إذا Jscriptيستدعي تطبيق تعليمات برمجية موثوق بها جزئيا أو إذا كان عليه هو قيد التشغيل في أحد تطبيقات مع رمز آخر (مثلاً من داخل Studio Vهوual لمضيف تطبيقات [VSA])، سلوك تطبيق قد يتم ‏‏تاريخ التعديل.

واقتران من القيم بالموضع هو هو التي أي Jscriptتعليمات برمجية في تطبيق (أو في مثيل فئة AppDomain) يجب أن يعمل على المستوى الثقة لا أعلى من باقي التعليمة البرمجية في التطبيق. غير ذلك الحكيم، غير ذلك يمكن التعامل مع رمز المحرك Jscriptفئة، والذي بدوره تعديل بيانات وقد تؤثر على غير ذلك تعليمات برمجية في تطبيق. لمزيد من المعلومات، راجع _AppDomain.

الوصول إلى تجميع

Jscriptيمكنك بها الرجوع إلى استخدام كل من تجميعات قوي أسماء وأسماء نصية بسيطة. مرجع الواضحة ويتضمن معلومات الإصدار من كـ sembly كـ أيضا كـ توقيع تشفير والتكامل وهوية كـ sembly. تشغيل الرغم من أنها هو سهلة الاستخدام اسماً بسيط عند الإشارة إلى تجميع، يساعد الواضحة يحمي تعليمات برمجية في حالة تجميع آخر تشغيل النظام الخاص بك له نفس الاسم بسيطة ولكن وظائف مختلفة. لمزيد من المعلومات، راجع كيفية: مرجع تجميع المسماة قوية.

إنشاء الدوال الخيطية

Jscriptوقت التشغيل هو غير مصممة لتكون مؤشر ترابط-آمن. وبالتالي، ذات مؤشرات ترابط متعددة Jscriptتعليمات برمجية قد يكون سلوك غير متوقع. إذا قمت بتطوير تجميع في Jscript، ضع في الاعتبار أنه يمكن استخدامه في سياق ذات مؤشرات ترابط متعددة. يجب عليك استخدام الفئات من مساحة النظام.Threading ، مثل Mutexالفئة، إلى التأكد من أن Jscriptيتم تشغيل تعليمات برمجية في تجميع باستخدام المزامنة الصحيحة.

لأن تعليمات برمجية التزامن المناسبة هو صعوبة في الكتابة بأية لغة، لا يجب محاولة كتابة تجميعات العام في Jscriptإلا إذا كان لديك فهم جيد لكيفية تنفيذ التعليمة البرمجية الضرورية التزامن. لمزيد من المعلومات، راجع System.Threading.

ملاحظة

لا تحتاج إلى كتابة تعليمات برمجية المزامنة ل ASP.NETالتطبيقات المكتوبة في Jscriptلأن ASP.NETيدير تزامن الجميع عمليات جزئية فإنه spawns. ومع ذلك، ويب عناصر التحكم في Jscriptيجب أن يحتوي رمز المزامنة لأن أنها تعمل بطريقة تشبه تجميعات.

أخطاء وقت التشغيل

لأن Jscriptهو لغة مكتوب المتصلة، فإنه هو أكثر الأخطاء من type-mهوmatches المحتملة من بعض اللغات الأخرى، مثل Visual Basicو #Visual C. لأن mهوmatches نوع يمكن أن تتسبب أخطاء وقت التشغيل في التطبيقات، فإنه هو المهم dهوcover mهوmatches نوع المحتملة أثناء تطوير تعليمات برمجية. يمكنك استخدام /warnaserrorعلامة باستخدام المترجم سطر الأوامر أو سمة warninglevel من التوجيه @ صفحة في ASP.NETالصفحات. ل المزيد من المعلومات، راجع /warnaserror و الصفحة @ .

الوضع توافق

complied تجميعات في وضع توافق (مع /سريع- خيار ) هي أقل مشفرة من تلك تصنيف في الوضع السريع (الوضع الافتراضي). /سريع- خيار تمكين ميزات اللغة غير متوفرة بشكل افتراضي، ولكنها مطلوبة من أجل توافق مع برامج نصية المكتوبة من أجل Jscriptالإصدار 5.6 و سابقا. على سبيل المثال، خصائص expando ديناميكياً تمت الإضافة إلى الكائنات المضمنة، مثل Stringالكائن في الوضع توافق.

الوضع توافق هو لمساعدة المطورين في بنية الملفات التنفيذية مستقل من قديم Jscriptتعليمات برمجية. عند تطوير مكتبات أو الملفات التنفيذية الجديد، استخدم الوضع الافتراضي. ليس هذا يحمي التطبيقات، بل يساعد أيضا على توفير أداء أفضل و التفاعل مع تجميعات الأخرى بشكل أفضل. للحصول على مزيد من المعلومات، راجع /سريعة .

راجع أيضًا:

المبادئ

ترقية التطبيقات التي تم إنشاؤها في الإصدارات السابقة من JScript

موارد أخرى

الأمان في كعب والتعليمات البرمجية إطار عمل .NET