Dodatečné informace o zabezpečení ve Windows Forms

Nastavení zabezpečení rozhraní .NET Framework může způsobit, že se aplikace bude v prostředí s částečnou důvěryhodností spouštět odlišně než v místním počítači. Rozhraní .NET Framework mimo jiné omezuje přístup k takovým důležitým místním prostředkům, jako je systém souborů, síť a nespravovaná rozhraní API. Nastavení zabezpečení ovlivňuje schopnost volat rozhraní API systému Microsoft Windows nebo jiná rozhraní API, která nelze ověřit systémem zabezpečení. Zabezpečení také ovlivňuje další aspekty vaší aplikace, včetně přístupu k souborům a datům a tisku. Další informace o přístupu k souborům a datům v prostředí s částečnou důvěryhodností najdete v tématu Více zabezpečených souborů a přístupu k datům v model Windows Forms. Další informace o tisku v prostředí s částečnou důvěryhodností naleznete v tématu Bezpečnější tisk v model Windows Forms.

V následujících částech se dozvíte, jak pracovat se schránkou, provádět manipulaci s okny a volat rozhraní API systému Windows z aplikací spuštěných v prostředí s částečnou důvěryhodností.

Přístup ke schránce

Třída UIPermission řídí přístup ke schránce a přidružená UIPermissionClipboard hodnota výčtu označuje úroveň přístupu. Následující tabulka uvádí možné úrovně oprávnění.

Hodnota UIPermissionClipboard Popis
AllClipboard Schránku lze použít bez omezení.
OwnClipboard Schránku lze použít s určitými omezeními. Možnost umístit data do schránky (operace kopírování nebo vyjmutí příkazů) je neomezená. Vnitřní ovládací prvky, které přijímají vložení, například textové pole, mohou přijímat data schránky, ale uživatelské ovládací prvky nemohou programově číst ze schránky.
NoClipboard Schránku nelze použít.

Zóna Místního intranetu ve výchozím nastavení přijímá AllClipboard přístup a zóna internetu přijímá OwnClipboard přístup. To znamená, že aplikace může kopírovat data do schránky, ale aplikace nemůže do schránky vložit ani číst programově. Tato omezení brání programům bez plné důvěryhodnosti číst obsah zkopírovaný do schránky jinou aplikací. Pokud vaše aplikace vyžaduje úplný přístup ke schránce, ale nemáte oprávnění, budete muset zvýšit oprávnění pro vaši aplikaci. Další informace o zvýšení oprávnění naleznete v tématu Obecné zásady zabezpečení Správa istrace.

Manipulace s okny

Třída UIPermission také řídí oprávnění k provádění manipulace s okny a další akce související s uživatelským rozhraním a přidružená UIPermissionWindow hodnota výčtu označuje úroveň přístupu. Následující tabulka uvádí možné úrovně oprávnění.

Zóna Místního intranetu ve výchozím nastavení přijímá AllWindows přístup a zóna internetu přijímá SafeTopLevelWindows přístup. To znamená, že v zóně Internet může aplikace provádět většinu akcí okna a uživatelského rozhraní, ale vzhled okna bude změněn. V upraveném okně se při prvním spuštění zobrazí oznámení bubliny, obsahuje upravený text záhlaví a vyžaduje tlačítko zavřít na záhlaví. Oznámení bubliny a záhlaví identifikují uživatele aplikace, že aplikace běží pod částečným vztahem důvěryhodnosti.

Hodnota UIPermissionWindow Popis
AllWindows Uživatelé můžou bez omezení používat všechna okna a události uživatelského vstupu.
SafeTopLevelWindows Uživatelé můžou pro kreslení používat pouze bezpečnější okna nejvyšší úrovně a bezpečnější dílčíwindows a můžou pro uživatelské rozhraní používat pouze události uživatelského vstupu v rámci těchto oken nejvyšší úrovně a dílčíchwindows. Tato bezpečnější okna jsou jasně označená a mají minimální a maximální omezení velikosti. Tato omezení brání potenciálně škodlivým útokům na falšování identity, jako je například vynechání přihlašovacích obrazovek systému nebo plochy systému, a omezuje programový přístup k nadřazeným oknu, rozhraním API souvisejícím s fokusem a používání ToolTip ovládacího prvku.
SafeSubWindows Uživatelé můžou pro kreslení používat pouze bezpečnější dílčíwindows a můžou používat pouze události uživatelského vstupu pro uživatelské rozhraní v rámci daného dílčího okna. Ovládací prvek zobrazený v prohlížeči je příkladem bezpečnějšího dílčího okna.
NoWindows Uživatelé nemohou používat žádná okna ani události uživatelského rozhraní. Nelze použít žádné uživatelské rozhraní.

Každá úroveň oprávnění identifikovaná výčtem UIPermissionWindow umožňuje méně akcí, než je úroveň nad ní. Následující tabulky označují akce, které jsou omezené hodnotami SafeTopLevelWindows a SafeSubWindows které jsou omezené. Přesná oprávnění požadovaná pro každého člena najdete v dokumentaci k knihovně tříd rozhraní .NET Framework.

SafeTopLevelWindows oprávnění omezuje akce uvedené v následující tabulce.

Součást Omezené akce
Application - Nastavení SafeTopLevelCaptionFormat vlastnosti.
Control - Dostat Parent majetek.
- Nastavení Region vlastnosti.
- Volání FindForm , a FocusFromChildHandleFromHandle, PreProcessMessage, ReflectMessagenebo SetTopLevel metody.
- Volání GetChildAtPoint metody, pokud vrácený ovládací prvek není podřízený volajícího ovládacího prvku.
– Umožňuje změnit fokus ovládacího prvku uvnitř ovládacího prvku kontejneru.
Cursor - Nastavení Clip vlastnosti.
- Volání Hide metody.
DataGrid - Volání ProcessTabKey metody.
Form - Získání ActiveForm nebo MdiParent vlastnost.
- Nastavení objektu ControlBox, ShowInTaskbarnebo TopMost vlastnosti.
- Nastavení Opacity vlastnosti nižší než 50 %.
- Nastavení WindowState vlastnosti na Minimized programově.
- Volání Activate metody.
- Pomocí Nonehodnot , FixedToolWindowa SizableToolWindowFormBorderStyle výčtu.
NotifyIcon - Použití NotifyIcon komponenty je zcela omezeno.

Hodnota SafeSubWindows omezuje akce uvedené v následující tabulce, kromě omezení, která SafeTopLevelWindows tato hodnota uvádí.

Součást Omezené akce
CommonDialog - Zobrazuje dialogové okno odvozené z CommonDialog třídy.
Control - Volání CreateGraphics metody.
- Nastavení Cursor vlastnosti.
Cursor - Nastavení Current vlastnosti.
MessageBox - Volání Show metody.

Hostování ovládacích prvků třetích stran

K dalšímu druhu manipulace s okny může dojít, pokud vaše formuláře hostují ovládací prvky třetích stran. Ovládací prvek třetí strany je jakýkoliv vlastní, UserControl který jste nevypracovali a zkompilovali sami. I když je scénář hostování těžko zneužitelný, je teoreticky možné, že ovládací prvek třetí strany rozšíří plochu vykreslování tak, aby pokrývala celou oblast formuláře. Tento ovládací prvek pak může napodobovat kritické dialogové okno a požádat o informace, jako jsou kombinace uživatelského jména a hesla nebo čísla bankovních účtů od uživatelů.

Pokud chcete omezit toto potenciální riziko, použijte kontroly třetích stran jenom od dodavatelů, kterým můžete důvěřovat. Pokud používáte ovládací prvky třetích stran, které jste stáhli z neověřitelného zdroje, doporučujeme zkontrolovat zdrojový kód pro potenciální zneužití. Jakmile ověříte, že zdroj není škodlivý, měli byste sestavení zkompilovat sami, abyste zajistili, že zdroj odpovídá sestavení.

Volání rozhraní API systému Windows

Pokud návrh vaší aplikace vyžaduje volání funkce z rozhraní API systému Windows, přistupujete k nespravovanému kódu. V takovém případě nelze určit akce kódu pro okno nebo operační systém při práci s voláními nebo hodnotami rozhraní API systému Windows. Třída SecurityPermission a UnmanagedCode hodnota výčtu řídí přístup k nespravovanému SecurityPermissionFlag kódu. Aplikace má přístup k nespravovanému UnmanagedCode kódu jenom v případech, kdy mu je uděleno oprávnění. Ve výchozím nastavení můžou nespravovaný kód volat pouze aplikace, které jsou spuštěné místně.

Někteří model Windows Forms členové poskytují nespravovaný přístup, který vyžaduje UnmanagedCode oprávnění. Následující tabulka uvádí členy v System.Windows.Forms oboru názvů, které vyžadují oprávnění. Další informace o oprávněních požadovaných pro člena naleznete v dokumentaci knihovny tříd rozhraní .NET Framework.

Součást Člen
Application - AddMessageFilter Metoda
- CurrentInputLanguage Vlastnost
- Exit Metoda
- ExitThread Metoda
- ThreadException Událost
CommonDialog - HookProc Metoda
- OwnerWndProc\Metoda
- Reset Metoda
- RunDialog Metoda
Control - CreateParams Metoda
- DefWndProc Metoda
- DestroyHandle Metoda
- WndProc Metoda
Help Metody - ShowHelp
- ShowHelpIndex Metoda
NativeWindow Třída - NativeWindow
Screen - FromHandle Metoda
SendKeys - Send Metoda
- SendWait Metoda

Pokud vaše aplikace nemá oprávnění volat nespravovaný kód, musí vaše aplikace požádat o UnmanagedCode oprávnění, nebo musíte zvážit alternativní způsoby implementace funkcí. V mnoha případech model Windows Forms poskytuje spravovanou alternativu k funkcím rozhraní API systému Windows. Pokud neexistují žádné alternativní prostředky a aplikace musí přistupovat k nespravovanému kódu, budete muset zvýšit oprávnění pro aplikaci.

Oprávnění k volání nespravovaného kódu umožňuje aplikaci provádět cokoliv. Proto by mělo být uděleno oprávnění k volání nespravovaného kódu pouze pro aplikace, které pocházejí z důvěryhodného zdroje. V závislosti na aplikaci může být funkce aplikace, která volá nespravovaný kód, volitelná nebo povolená jenom v prostředí s úplným vztahem důvěryhodnosti. Další informace onebezpečných Správa ch Další informace o zvýšení oprávnění naleznete v tématu Obecné zásady zabezpečení Správa istrace.

Viz také