Jak použít atribut AllowPartiallyTrustedCallers volání sestavení má silný název z webové stránky pomocí aplikace Visual C# .NET, Visual C# 2005 nebo novější verze

Důležité: Tento článek obsahuje informace o tom, jak oslabit zabezpečení nebo vypnout funkce zabezpečení v počítači. Tyto změny mohou vyřešit konkrétní problém. Před provedením těchto změn však doporučujeme vyhodnotit nebezpečí spojená s nasazením tohoto řešení v konkrétním prostředí. Pokud se rozhodnete řešení implementovat, přijmout veškerá dodatečná opatření k ochraně systému.

Souhrn

Můžete zavolat ovládací prvek uživatele systému Windows z webové stránky. Volání systému Windows uživatelský ovládací prvek, můžete získat přístup k prostředkům zabezpečené a která je vytvořena jako sestavení, která má silný název, je třeba označit sestavení uživatelský ovládací prvek systému Windows pomocí AllowPartiallyTrusted atribut sestavení. Musí obsahovat také umožňuje uživatelský ovládací prvek systému Windows pro přístup k prostředku zabezpečené volání metody Assert .

ÚVOD

Tento podrobný článek popisuje, jak volat ovládací prvek uživatele systému Windows z webové stránky. Uživatelský ovládací prvek systému Windows, která tento článek popisuje, je vytvořena jako sestavení, která má silný název. Ukázkové v tomto článku popisuje, jak použít AllowPartiallyTrustedCallers atribut sestavení tak, že sestavení má silný název lze přistupovat z webové stránky. Ukázky v článku také popisuje způsob použití metody Assert .

zpět na horní

Vytvořit dvojici klíčů silným názvem

Dvojice klíčů, která má silný název je použit k podepsání sestavení pro uživatelský ovládací prvek, který má silný název. Silný název je použit při vytváření skupiny kódu, který uděluje oprávnění k používání sestavení z částečně důvěryhodného kódu.
  1. Otevřete příkazový řádek Visual Studio.

    V aplikaci Microsoft Visual Studio .NET 2002 klepněte na tlačítko Start, přejděte na
    Programy, přejděte na příkaz Microsoft Visual Studio.NET, přejděte na příkaz Nástroje aplikace Visual Studio .NETa klepněte na tlačítko Příkazový řádek sady Visual Studio .NET. Zobrazí se okno příkazového řádku sady Visual Studio .NET.

    V aplikaci Microsoft Visual Studio .NET 2003 klepněte na tlačítko Start, přejděte na příkaz programy, přejděte na příkaz Microsoft Visual Studio .NET 2003, Visual Studio .NET nástrojea potom klepněte na položku Visual Studio .NET 2003 příkazový řádek. Zobrazí se okno aplikace Visual Studio .NET 2003 příkazový řádek.

    V aplikaci Visual Studio 2005 klepněte na tlačítko
    Start, přejděte na příkaz programy, přejděte na
    Microsoft Visual Studio 2005, přejděte na příkaz Visual Studio 2005 Toolsa potom klepněte na tlačítko Příkazový řádek sady Visual Studio 2005. Zobrazí se okno příkazového řádku sady Visual Studio 2005.

    V aplikaci Visual Studio 2008 klepněte na tlačítko
    Start, přejděte na příkaz programy, přejděte na
    Microsoft Visual Studio 2008, přejděte na příkaz Nástroje aplikace Visual Studio 2008a potom klepněte na tlačítko Příkazový řádek sady Visual Studio 2008. Objeví se okno Příkazový řádek Visual Studio 2008Command.
  2. Na příkazovém řádku zadejte následující příkaz a stiskněte klávesu ENTER:
    c:\snKey.snk sn -k
zpět na horní

Vytvořit uživatelský ovládací prvek systému Windows pomocí jazyka Microsoft Visual C# .NET, Microsoft Visual C# 2005 nebo novější

Upozornění: Toto zástupné řešení může provádět v počítači nebo síti zranitelnější vůči útoku uživatelů se zlými úmysly nebo škodlivému softwaru, například virům. My toto řešení nedoporučujeme, ale poskytujeme tyto informace, takže můžete řešení implementovat podle vlastního uvážení. Toto řešení používáte na vlastní nebezpečí.

Tento uživatelský ovládací prvek ukazuje, jak použít AllowPartiallyTrustedCallers atribut sestavení. Sestavení se silným názvem lze volat pouze plně důvěryhodní volající pokud používá sestavení AllowPartiallyTrustedCallers atribut. Vzorek pro uživatelský ovládací prvek také ukazuje, jak použít metodu Assert . Metoda Assert prohlašuje, že volající kód můžete použít kód, který volá Assert metoda pro přístup k prostředku, který je chráněn pomocí požadavku oprávnění. Kód může přistupovat k prostředku, i když volajícím vyšší v zásobníku nebyla udělena oprávnění k přístupu k prostředku.

Tento uživatelský ovládací prvek umožňuje vybrat pomocí dialogového okna Otevřít soubor. Ovládací prvek pak otevře textový soubor v seznamu. Uživatelské rozhraní tento uživatelský ovládací prvek obsahuje jedno textové pole a jedno pole seznamu. V textovém poli se zobrazí název souboru, který je vybrán a seznamu se zobrazí obsah souboru, který je vybrán.

Čtení názvu vybraného souboru v
OpenFileDialog pole a číst soubor, musí být uděleno oprávnění typu FileIOPermission. Uživatelský ovládací prvek musí mít toto oprávnění uděleno prostřednictvím své skupiny kódu. Webové stránky, která volá ovládací prvek nemá toto oprávnění.

Chcete-li zabránit procházení zásobníku, který není úspěšné, protože volající nemá požadovaný typ oprávnění FileIOPermission, pomocí metody Assert . Všimněte si, že metody Assert Pokud můžete otevřít chyby zabezpečení metody Assert se používá nesprávně nebo nevhodně. Proto musíte použít metodu Assert buďte opatrní. RevertAssert metoda musí splňovat Assert metoda co nejdříve po dokončení operace soubor.

Poznámka: K zajištění správného zobrazení obsahu souboru v rozevíracím seznamu, vyberte pouze textové soubory pomocí tohoto ovládacího prvku uživatele.
  1. Spusťte aplikaci Microsoft Visual Studio .NET, Microsoft Visual Studio 2005 nebo novější verze aplikace Visual Studio.
  2. V nabídce soubor přejděte na příkaz
    Novýa potom klikněte na projekt. Zobrazí se dialogové okno Nový projekt .
  3. V části Typy projektuklepněte na Projekty Visual C#.

    Poznámka: V aplikaci Visual Studio klepněte na tlačítko Visual C# ve skupinovém rámečku
    Typy projektů.
  4. Ve skupinovém rámečku šablonyklepněte na tlačítko Řídicí knihovna systému Windows.
  5. Do pole název zadejte
    UserControl.
  6. Klepněte na tlačítko OK
  7. V okně Průzkumník řešení klikněte pravým tlačítkem myši
    UserControl1.csa potom klepněte na tlačítko Zobrazit kód. Zobrazí se soubor UserControl1.cs.
  8. Nahraďte existující kód následující kód:
    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. V Průzkumníku řešení klikněte pravým tlačítkem myši
    AssemblyInfo.csa potom klepněte na tlačítko Zobrazit kód. Soubor AssemblyInfo.cs se zobrazí.
  10. Vyhledejte následující kód:
    [assembly: AssemblyVersion("1.0.*")]
    Tento kód nahraďte následující kód:
    [assembly: AssemblyVersion("1.0.0.0")]
  11. Vyhledejte následující kód:
    [assembly: AssemblyKeyFile("")]
    Tento kód nahraďte následující kód:
    [assembly: AssemblyKeyFile("c:\\snKey.snk")]
  12. V nabídce sestavení klepněte na tlačítko Sestavit řešení.
zpět na horní

Vytvořit skupinu kódu k přiřazení oprávnění pro sestavení

Upozornění: Toto zástupné řešení může provádět v počítači nebo síti zranitelnější vůči útoku uživatelů se zlými úmysly nebo škodlivému softwaru, například virům. My toto řešení nedoporučujeme, ale poskytujeme tyto informace, takže můžete řešení implementovat podle vlastního uvážení. Toto řešení používáte na vlastní nebezpečí.

Kód skupiny určuje, zda sestavení odpovídá definovaných správcem kritéria, které jsou označovány jako podmínku členství. Pokud sestavení odpovídá, kódová skupina uděluje sestavení sadu oprávnění, který je přidružen k této skupině kód.

Chcete-li vytvořit skupinu kódu:
  1. Klepněte na tlačítko Start, přejděte na
    Nastavenía potom na příkaz Ovládací panely. Na
    Zobrazí se okno Ovládací panely .
  2. Poklepejte na položku Nástroje pro správu. Na
    Zobrazí se okno Nástroje pro správu .
  3. V aplikaci Microsoft Visual Studio .NET 2002 poklepejte na
    Konfigurace rozhraní.NET Framework společnosti Microsoft. Zobrazí se okno Konfigurace rozhraní.NET Framework .

    Microsoft Visual Studio .NET 2003 poklepejte na položku Microsoft rozhraní.NET Framework 1.1 Configuration. Zobrazí se okno .NET Configuration 1.1 .

    Poklepejte na položku Microsoft Visual Studio 2005 nebo novější verze
    Konfigurace Microsoft rozhraní.NET Framework 2.0. Zobrazí se okno Rozhraní.NET Framework 2.0 konfigurace .
  4. V levém podokně rozbalte uzel Zásady zabezpečení modulu Runtime, rozbalte položku počítača pak rozbalte položku Kód skupiny.
  5. All_Codeklepněte pravým tlačítkem myši a potom klepněte na tlačítko
    Nové. Zobrazí se Průvodce vytvoření skupiny kódu.
  6. Ujistěte se, zda je vybrána možnost vytvořit novou skupinu kódu , typ MyUserControlCodeGroup v
    Název a klepněte na tlačítko Další. Na
    Zobrazí se stránka Vyberte typ podmínky .
  7. V seznamu Zvolte typ podmínku pro tuto skupinu kódu klepněte na Silný název.
  8. Klepněte na tlačítko importovat. Zobrazí se dialogové okno Import silný název ze sestavení .
  9. Vyhledejte soubor UserControl.dll, který jste vytvořili v části "Vytvořit uživatelský ovládací prvek systému Windows pomocí Microsoft Visual C# .NET, Microsoft Visual C# 2005 nebo novější" a potom klepněte na tlačítko Otevřít.
  10. Klepněte na tlačítko Další. Zobrazí se stránka přiřazení oprávnění nastaveno na skupiny kódu .
  11. Klepněte na tlačítko použít existující oprávnění nastavit, vyberte
    FullTrust ze seznamu a klepněte na tlačítko Další. Zobrazí se stránka dokončení Průvodce .
  12. Klepněte na tlačítko Dokončit zavřete průvodce vytvoření skupiny kódu.
zpět na horní

Vytvořit soubor HTML pro volání uživatelského ovládacího prvku

Po vytvoření skupiny k přiřazení oprávnění pro sestavení kódu, je nutné vytvořit soubor ve formátu HTML při volání uživatelského ovládacího prvku v prohlížeči a musíte nastavit prostředí a ujistěte se, že uživatelský ovládací prvek nazývá úspěšně.
  1. Klepněte na tlačítko Start, klepněte na příkaz Spustit, zadejte Poznámkový bloka potom klepněte na tlačítko
    OK.
  2. V programu Poznámkový blok vložte následující kód:
    <OBJECT id="MyWinControl1" height="200" width="200" classid="http:UserControl.dll#UserControl.UserControl1" VIEWASTEXT>    
    </OBJECT>
  3. V kořenové složce Internetová informační služba (IIS) uložte soubor jako CallUserControl.htm.
  4. Zkopírujte soubor UserControl.dll, který jste vytvořili v části "Vytvořit uživatelský ovládací prvek systému Windows pomocí Microsoft Visual C# .NET, Microsoft Visual C# 2005 nebo novější" do kořenové složky služby IIS.
  5. Otevřete aplikaci Microsoft Internet Explorer.
  6. Do pole adresa zadejte
    http://localhost/CallUserControl.htma stiskněte klávesu ENTER. Zobrazí se dialogové okno Otevřít .
  7. Vyhledejte libovolný textový soubor a klepněte na tlačítko Otevřít. Text souboru se zobrazí v ovládacím prvku ListBox v prohlížeči.
zpět na horní

Odkazy

Další informace naleznete na následujících webech Microsoft Developer Network (MSDN):
Konfigurace pomocí nástroje Konfigurace rozhraní.NET Framework skupina kódu
http://msdn2.microsoft.com/en-us/library/eb8xw74a(vs.71).aspx

Metoda CodeAccessPermission.Assert
http://msdn2.microsoft.com/en-us/library/system.security.codeaccesspermission.assert(vs.71).aspx

Sestavení rozhraní.NET Framework a atribut AllowPartiallyTrustedCallers
http://msdn2.microsoft.com/en-us/library/aa302328.aspx

AllowPartiallyTrustedCallersAttribute třída
http://msdn2.microsoft.com/en-us/library/system.security.allowpartiallytrustedcallersattribute(vs.71).aspx

Důležité informace o zabezpečení sestavení
http://msdn2.microsoft.com/en-us/library/ab4eace3(vs.71).aspx

Kalhotky pro zabezpečení: zabezpečení v rozhraní.NET Framework a silné názvy

http://msdn2.microsoft.com/en-us/library/aa302416.aspx
zpět na horní
Vlastnosti

ID článku: 839300 - Poslední kontrola: 16. 1. 2017 - Revize: 1

Váš názor