كيفية استخدام السمة AllowPartiallyTrustedCallers لاستدعاء تجميع الذي يحتوي على اسم قوي من صفحة ويب باستخدام Visual C#.NET أو Visual C# 2005 أو الإصدارات الأحدث

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

ملخص

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

مقدمة

توضح هذه المقالة خطوة بخطوة كيفية استدعاء عنصر تحكم مستخدم Windows من صفحة ويب. بناء عنصر تحكم مستخدم Windows الذي توضحه هذه المقالة باسم تجميع الذي يحتوي على اسم قوي. وصف النموذج في هذه المقالة كيفية استخدام السمة AllowPartiallyTrustedCallers للجمعية بحيث يمكن الوصول إلى تجميع الذي يحتوي على اسم قوي من صفحة ويب. وصف النموذج في المقالة أيضا كيفية استخدام الأسلوب تأكيد .

العودة إلى أعلى

إنشاء زوج مفاتيح يحتوي على اسم قوي

يتم استخدام زوج مفاتيح يحتوي على اسم قوي للتوقيع على تجميع عنصر تحكم مستخدم الذي يحتوي على اسم قوي. يتم استخدام الاسم القوى عندما تقوم بإنشاء مجموعة التعليمات برمجية التي تمنح الإذن لاستخدام التجميع من تعليمات برمجية موثوق بها جزئيا.
  1. افتح موجه أوامر Visual Studio.

    في Microsoft Visual Studio.NET 2002، انقر فوق ابدأ، وأشر إلى
    أشر إلى Microsoft Visual Studio.NET البرامج، وأشر إلى أدوات.NET Visual Studioوثم انقر فوق موجه الأوامر Visual Studio.NET. يظهر إطار موجه الأوامر Visual Studio.NET.

    في Microsoft Visual Studio.NET 2003، انقر فوق ابدأوأشر إلى البرامج، وأشر إلى Microsoft Visual Studio.NET 2003، أشر إلى أدوات.NET Visual Studioوثم انقر فوق موجه Visual Studio.NET 2003 الأمر. يظهر إطار "موجه Visual Studio.NET 2003 الأمر".

    في Visual Studio 2005، انقر فوق
    ابدأ، أشر إلى البرامج، أشر إلى
    أشر إلى Visual Studio 2005 أدوات Microsoft Visual Studio 2005، وثم انقر فوق موجه الأوامر Visual Studio 2005. يظهر إطار موجه الأوامر Visual Studio 2005.

    في Visual Studio 2008، انقر فوق
    ابدأ، أشر إلى البرامج، أشر إلى
    Microsoft Visual Studio 2008، أشر إلى أدوات 2008 Visual Studioومن ثم انقر فوق موجه الأوامر Visual Studio 2008. يظهر إطار موجه 2008Command Visual Studio.
  2. اكتب ما يلي في موجه الأوامر، واضغط مفتاح الإدخال ENTER:
    sn-ك c:\snKey.snk
العودة إلى أعلى

إنشاء عنصر تحكم مستخدم Windows باستخدام Microsoft Visual C#.NET أو Microsoft Visual C# 2005 أو إصدار لاحق

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

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

عنصر التحكم هذا يسمح لك بتحديد ملف باستخدام مربع الحوار فتح. عنصر التحكم ثم يقوم بفتح الملف النصي في مربع القائمة. واجهة المستخدم الخاصة بعنصر التحكم هذا يتضمن مربع قائمة ومربع نص واحد. يعرض اسم الملف الذي تم تحديده في مربع النص ومربع القائمة إظهار محتويات الملف الذي تم تحديده.

قراءة اسم الملف المحدد من
مربع OpenFileDialog ، وقراءة الملف، يجب أن يتم منح نوع الإذن FileIOPermission. يجب أن يكون لديك عنصر تحكم المستخدم هذا الإذن الممنوح من خلال مجموعة التعليمات البرمجية الخاصة به. صفحة ويب التي تقوم باستدعاء عنصر التحكم ليس لديه هذا الإذن.

لمنع عملية التجوال بمكدّس غير ناجح لأن المتصل ليس لديه نوع الإذن FileIOPermission المطلوبة، استخدم الأسلوب تأكيد . لاحظ أن الأسلوب تأكيد فتح ثغرات أمنية إذا تم استخدام الأسلوب تأكيد بشكل غير صحيح أو. ولذلك، يجب استخدام أسلوب التأكيد بحذر شديد. يجب أن يتبع أسلوب ريفيرتاسيرت الأسلوب تأكيد بمجرد اكتمال عملية الملف.

ملاحظة: للتأكد من ظهور محتويات الملف بشكل صحيح في مربع القائمة، استخدم عنصر التحكم هذا لتحديد ملفات نصية فقط.
  1. بدء تشغيل Microsoft Visual Studio.NET Microsoft Visual Studio 2005 أو إصدار أحدث من Visual Studio.
  2. في القائمة ملف ، أشر إلى
    جديد، ثم انقر فوق المشروع. يظهر مربع الحوار مشروع جديد .
  3. ضمن أنواع المشروع، انقر فوق مشاريع Visual C#.

    ملاحظة: في Visual Studio، انقر فوق Visual C# ضمن
    أنواع المشاريع.
  4. ضمن قوالب، انقر فوق مكتبة عنصر تحكم Windows.
  5. في المربع الاسم ، اكتب
    UserControl.
  6. انقر فوق موافق.
  7. في إطار "مستكشف الحلول"، انقر بالزر الأيمن
    UserControl1.cs، ثم انقر فوق عرض التعليمات البرمجية. يظهر الملف UserControl1.cs.
  8. استبدال التعليمات البرمجية الموجودة مع التعليمات البرمجية التالية:
    using System;using System.Collections;
    using System.ComponentModel;
    using System.Drawing;
    using System.Data;
    using System.Windows.Forms;
    using System.IO;
    using System.Security;
    using System.Security.Permissions;
    using System.Reflection;
    using System.Runtime.CompilerServices;

    [assembly:AllowPartiallyTrustedCallers]

    namespace UserControl
    {
    /// <summary>
    /// Summary description for UserControl1.
    /// </summary>
    public class UserControl1 : System.Windows.Forms.UserControl
    {
    private System.Windows.Forms.TextBox textBox1;
    private System.Windows.Forms.ListBox listBox1;
    /// <summary>
    /// Required designer variable.
    /// </summary>
    private System.ComponentModel.Container components = null;

    public UserControl1()
    {
    // This call is required by the Windows.Forms Form Designer.
    InitializeComponent();

    // TODO: Add any initialization after the InitForm call.
    OpenFileDialog fileDialog = new OpenFileDialog();
    if(fileDialog.ShowDialog() == DialogResult.OK)
    {
    // Reading the name of the selected file from the OpenFileDialog box
    // and reading the file requires FileIOPermission.
    // The Assert command must be followed by a RevertAssert as soon as the file operation
    // is completed.
    new FileIOPermission(PermissionState.Unrestricted).Assert();
    textBox1.Text = fileDialog.FileName;
    // Display the contents of the file in the text box.
    FileStream fsIn = new FileStream(textBox1.Text, FileMode.Open, FileAccess.Read,
    FileShare.Read);
    StreamReader sr = new StreamReader(fsIn);

    // Process every line in the file.
    for (String Line = sr.ReadLine(); Line != null; Line = sr.ReadLine())
    {
    listBox1.Items.Add(Line);
    }
    // It is very important to call RevertAssert to restore the stack walk for
    // file operations.
    FileIOPermission.RevertAssert();
    }

    }

    /// <summary>
    /// Clean up any resources that are being used.
    /// </summary>
    protected override void Dispose( bool disposing )
    {
    if( disposing )
    {
    if( components != null )
    components.Dispose();
    }
    base.Dispose( disposing );
    }

    #region Component Designer generated code
    /// <summary>
    /// Required method for Designer support. Do not modify
    /// the contents of this method with the code editor.
    /// </summary>
    private void InitializeComponent()
    {
    this.textBox1 = new System.Windows.Forms.TextBox();
    this.listBox1 = new System.Windows.Forms.ListBox();
    this.SuspendLayout();
    //
    // textBox1
    //
    this.textBox1.Location = new System.Drawing.Point(32, 16);
    this.textBox1.Name = "textBox1";
    this.textBox1.TabIndex = 0;
    this.textBox1.Text = "textBox1";
    //
    // listBox1
    //
    this.listBox1.Location = new System.Drawing.Point(144, 16);
    this.listBox1.Name = "listBox1";
    this.listBox1.Size = new System.Drawing.Size(120, 95);
    this.listBox1.TabIndex = 1;
    //
    // UserControl1
    //
    this.Controls.Add(this.listBox1);
    this.Controls.Add(this.textBox1);
    this.Name = "UserControl1";
    this.Size = new System.Drawing.Size(376, 120);
    this.ResumeLayout(false);

    }
    #endregion
    }
    }

  9. في "مستكشف الحلول"، انقر بالزر الأيمن
    AssemblyInfo.cs، ثم انقر فوق عرض التعليمات البرمجية. يظهر الملف AssemblyInfo.cs.
  10. حدد موقع التعليمة البرمجية التالية:
    [assembly: AssemblyVersion("1.0.*")]
    استبدل هذه التعليمة البرمجية بالتعليمة البرمجية التالية:
    [assembly: AssemblyVersion("1.0.0.0")]
  11. حدد موقع التعليمة البرمجية التالية:
    [assembly: AssemblyKeyFile("")]
    استبدل هذه التعليمة البرمجية بالتعليمة البرمجية التالية:
    [assembly: AssemblyKeyFile("c:\\snKey.snk")]
  12. في بنية القائمة، انقر فوق إنشاء حلول.
العودة إلى أعلى

إنشاء مجموعة تعليمات برمجية لتعيين الأذونات للتجميع

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

مجموعة التعليمات برمجية يحدد ما إذا كان تجميع يطابق المعايير المعرفة من قبل المسؤول المشار إليها كشرط عضوية. إذا تطابقت التجميع، تمنح مجموعة التعليمات البرمجية التجميع مجموعة من الأذونات التي تم إقرانها بمجموعة التعليمات البرمجية هذه.

لإنشاء مجموعة التعليمات برمجية:
  1. انقر فوق ابدأ، وأشر إلى
    إعدادات، ثم انقر فوق لوحة التحكم. على
    يظهر إطار " لوحة التحكم ".
  2. انقر نقراً مزدوجاً فوق أدوات إدارية. على
    يظهر إطار الأدوات الإدارية .
  3. في Microsoft Visual Studio.NET 2002، انقر نقراً مزدوجاً فوق
    تكوين Microsoft.NET Framework. يظهر إطار تكوين.NET Framework .

    ل Microsoft Visual Studio.NET 2003، انقر نقراً مزدوجاً فوق تكوين Microsoft.NET Framework 1.1. يظهر إطار 1.1 تكوين.NET .

    في Microsoft Visual Studio 2005 أو الإصدارات الأحدث، انقر نقراً مزدوجاً فوق
    تكوين Microsoft.NET Framework 2.0. يظهر إطار تكوين.NET Framework 2.0 .
  4. في الجزء الأيمن، قم بتوسيع نهج أمان وقت التشغيل، توسيع الجهازثم قم بتوسيع مجموعات التعليمات البرمجية.
  5. زر الماوس الأيمن فوق All_Code، ومن ثم انقر فوق
    جديد. يظهر معالج إنشاء مجموعة تعليمات برمجية.
  6. تأكد من تحديد إنشاء مجموعة تعليمات برمجية جديدة ، اكتب ميوسيركونترولكوديجروب في
    اسم مربع ومن ثم انقر فوق التالي. على
    تظهر صفحة اختيار نوع شرط .
  7. في القائمة اختيار نوع الشرط لمجموعة التعليمات البرمجية هذه ، انقر فوق اسم قوي.
  8. انقر فوق استيراد. يظهر مربع الحوار استيراد اسم قوي من التجميع .
  9. حدد موقع الملف UserControl.dll الذي قمت بإنشائه في قسم "إنشاء عنصر تحكم مستخدم Windows باستخدام Microsoft Visual C#.NET أو Microsoft Visual C# 2005 أو إصدار لاحق"، ومن ثم انقر فوق فتح.
  10. انقر فوق التالي. تظهر صفحة تعيين "مجموعة أذونات" لمجموعة التعليمات البرمجية .
  11. انقر فوق تعيين إذن استخدام موجود، حدد
    الثقة الكاملة من القائمة، ثم انقر فوق التالي. تظهر الصفحة إكمال المعالج .
  12. انقر فوق إنهاء لإغلاق معالج إنشاء مجموعة تعليمات برمجية.
العودة إلى أعلى

إنشاء ملف HTML لاستدعاء عنصر تحكم المستخدم

بعد إنشاء مجموعة التعليمات برمجية لتعيين الأذونات للتجميع، يجب إنشاء ملف HTML لاستدعاء عنصر تحكم المستخدم من المستعرض، ويجب إعداد البيئة للتأكد من أنه يتم استدعاء عنصر تحكم المستخدم بنجاح.
  1. انقر فوق ابدأ، ثم انقر فوق تشغيل، اكتب "المفكرة"وثم انقر فوق
    OK.
  2. في "المفكرة"، قم بلصق التعليمة البرمجية التالية:
    <OBJECT id="MyWinControl1" height="200" width="200" classid="http:UserControl.dll#UserControl.UserControl1" VIEWASTEXT>    
    </OBJECT>
  3. في المجلد الجذر لخدمات معلومات إنترنت (IIS) ل Microsoft، احفظ الملف باسم CallUserControl.htm.
  4. نسخ الملف UserControl.dll الذي قمت بإنشائه في قسم "إنشاء عنصر تحكم مستخدم Windows باستخدام Microsoft Visual C#.NET أو Microsoft Visual C# 2005 أو إصدار لاحق" إلى مجلد جذر IIS.
  5. افتح مستكشف إنترنت ل Microsoft.
  6. في المربع العنوان ، اكتب
    http://localhost/CallUserControl.htmومن ثم اضغط ENTER. يظهر مربع الحوار فتح .
  7. حدد موقع أي ملف نصي، ومن ثم انقر فوق فتح. يظهر النص من الملف في عنصر التحكم مربع القائمة الموجود في المستعرض.
العودة إلى أعلى

المراجع

لمزيد من المعلومات، قم بزيارة مواقع ويب شبكة مطوري Microsoft (MSDN) التالية:
تكوين مجموعات التعليمات البرمجية باستخدام أداة التكوين.NET Framework
http://msdn2.microsoft.com/en-us/library/eb8xw74a(vs.71).aspx

طريقة CodeAccessPermission.Assert
http://msdn2.microsoft.com/en-us/library/system.security.codeaccesspermission.assert(vs.71).aspx

تجميعات.NET framework والسمه AllowPartiallyTrustedCallers
http://msdn2.microsoft.com/en-us/library/aa302328.aspx

فئة AllowPartiallyTrustedCallersAttribute
http://msdn2.microsoft.com/en-us/library/system.security.allowpartiallytrustedcallersattribute(vs.71).aspx

اعتبارات أمان التجميعات
http://msdn2.microsoft.com/en-us/library/ab4eace3(vs.71).aspx

موجزات الأمان: الأسماء القوية والأمان في.NET Framework

http://msdn2.microsoft.com/en-us/library/aa302416.aspx
العودة إلى أعلى
خصائص

رقم الموضوع: 839300 - آخر مراجعة: 15‏/01‏/2017 - المراجعة: 1

تعليقات