ΠΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ caspol.exe Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠΎΠΌ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΡΠΎΠ²Π΅Π½Ρ ΠΌΠ°ΡΠΈΠ½Ρ, Π½ΠΎ Π΅ΡΠ»ΠΈ Π²ΡΠΉΡΠΈ ΠΈΠ· ΡΠΈΡΡΠ΅ΠΌΡ ΠΈ Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°ΡΡΡΡ ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ Π³ΡΡΠΏΠΏΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ Administrator, caspol.exe Π²ΡΠ±Π΅ΡΠ΅Ρ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΡΠΎΠ²Π΅Π½Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, caspol.exe Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ°ΠΌΡ ΡΡΠΈΠ»ΠΈΡΡ caspol.exe Π½Π΅ΡΠ°Π±ΠΎΡΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΠΉ.
Π’Π΅ΠΏΠ΅ΡΡ ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ ΠΎΠ±ΡΠ΅Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΠ± Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ΅ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ Π² .NET ΠΈ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ ΠΊ ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΡ, ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ Π΅Π΅ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΌ ΠΏΡΡΠ΅ΠΌ.
ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ Π² .NET
Π§ΡΠΎΠ±Ρ ΡΠΈΡΡΠ΅ΠΌΠ° Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ .NET ΡΠ°Π±ΠΎΡΠ°Π»Π°, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄ΠΎΠ²Π΅ΡΠΈΡΡ CLR ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ. ΠΠ°ΠΊ ΡΡΠΎ ΡΠ΄Π΅Π»Π°ΡΡ? ΠΠΎΠ³Π΄Π° Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄, ΡΡΠ΅Π±ΡΡΡΠΈΠΉ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ ΠΏΠΎΠ»Π½ΠΎΠΌΠΎΡΠΈΠΉ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠ°ΠΉΠ»Ρ Π½Π° Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΌ Π΄ΠΈΡΠΊΠ΅), CLR Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ ΡΡΠ΅ΠΊ Ρ ΡΠ΅Π»ΡΡ Π³Π°ΡΠ°Π½ΡΠΈΠΈ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΡΡΠ°ΡΡΠ½ΠΈΠΊ ΡΠ΅ΠΏΠΎΡΠΊΠΈ Π²ΡΠ·ΠΎΠ²ΠΎΠ² ΠΈΠΌΠ΅Π΅Ρ ΡΡΠ΅Π±ΡΠ΅ΠΌΡΠ΅ ΠΏΡΠ°Π²Π°.
Π‘Π»ΠΎΠ²ΠΎ 'ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ' ΡΠΆΠ΅, Π²Π΅ΡΠΎΡΡΠ½ΠΎ, ΠΎΠ±Π΅ΡΠΏΠΎΠΊΠΎΠΈΠ»ΠΎ Π²Π°Ρ Π² Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ, ΠΈ ΠΏΠΎΠ½ΡΡΠ½ΠΎ, ΡΡΠΎ Π΅Π΅ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΠ΅ β ΡΡΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°, Π½ΠΎ ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΠΉ ΡΡΠ΅Π΄Ρ .NET, ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡΡΡ ΠΏΠ»Π°ΡΠΈΡΡ Π·Π° Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ. ΠΠ½Π°ΡΠ΅ ΡΠ±ΠΎΡΠΊΠΈ, Π½Π΅ ΡΠ²Π»ΡΡΡΠΈΠ΅ΡΡ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ Π½Π°Π΄Π΅ΠΆΠ½Ρ Π½ΠΈ, ΠΌΠΎΠ³Π»ΠΈ Π±Ρ Π΄Π΅Π»Π°ΡΡ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΊ Π½Π°Π΄Π΅ΠΆΠ½ΡΠΌ ΡΠ±ΠΎΡΠΊΠ°ΠΌ ΠΈ ΡΠΈΡΡΠ΅ΠΌΠ° Π±ΡΠ»Π° Π±Ρ ΠΎΡΠΊΡΡΡΠ° Π΄Π»Ρ Π°ΡΠ°ΠΊΠΈ.
ΠΠ»Ρ ΡΠΏΡΠ°Π²ΠΊΠΈ, Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠΌΡΠΌΠΈ Π² ΡΡΠΎΠΉ Π³Π»Π°Π²Π΅ ΡΠ°ΡΡΡΠΌΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ .NET Framework ΡΠ²Π»ΡΡΡΡΡ:
β‘ System.Security.Permissions
β‘ System.Security.Policy
β‘ System.Security.Principal
ΠΡΠΌΠ΅ΡΠΈΠΌ, ΡΡΠΎ ΡΠΈΡΡΠ΅ΠΌΠ° Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΠΊΠΎΠ΄Ρ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΠ²ΠΈΠ΄Π΅ΡΠ΅Π»ΡΡΡΠ²Π° ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π² ΠΏΠ°ΡΠ΅ Ρ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ Π² Windows. ΠΡΠ»ΠΈ Π²Ρ Π·Π°Ρ ΠΎΡΠΈΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ Π½Π°ΡΡΠΎΠ»ΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ° .NET, ΡΠΎ Π΅ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΠΏΠΎΠ»Π½ΠΎΠΌΠΎΡΠΈΡ ΡΠΈΡΡΠ΅ΠΌΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΠΊΠΎΠ΄Ρ .NET, Π½ΠΎ ΡΠ΅Π³ΠΈΡΡΡΠΈΡΡΡΡΠΈΠΉΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠ°ΠΊΠΆΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΏΠΎΠ΄ ΡΡΠ΅ΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΡΡ Windows, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΈΠΌΠ΅Π΅Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΠΏΡΠ°Π²Π° Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π°. Π ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΊ Π½Π°ΡΡΠΎΠ»ΡΠ½ΡΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌ ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΡΠ΅ΠΊΡΡΠ΅ΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΠΏΡΠ°Π²Π° Π΄Π»Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌ ΡΠ°ΠΉΠ»Π°ΠΌ ΡΠ±ΠΎΡΠΊΠΈ Π½Π° Π΄ΠΈΡΠΊΠ΅. ΠΠ»Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΠ½ΡΠ΅ΡΠ½Π΅ΡΠ° ΡΡΠ΅ΡΠ½Π°Ρ Π·Π°ΠΏΠΈΡΡ, Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΡΠΉ ΡΠ΅ΡΠ²Π΅Ρ ΠΠ½ΡΠ΅ΡΠ½Π΅Ρ, Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΠΌΠ΅ΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠ°ΠΉΠ»Π°ΠΌ ΡΠ±ΠΎΡΠΊΠΈ.
Π’ΡΠ΅Π±ΡΠ΅ΠΌΡΠ΅ ΠΏΠΎΠ»Π½ΠΎΠΌΠΎΡΠΈΡ
Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Windows Forms Ρ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΈ Π½Π°ΠΆΠ°ΡΠΈΠΈ Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅, ΠΎΠ±ΡΠ°ΡΠ°ΡΡΠ΅Π΅ΡΡ ΠΊ Π΄ΠΈΡΠΊΡ. ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΡΠΎ Π΅ΡΠ»ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠ΅Π³ΠΎ ΠΏΠΎΠ»Π½ΠΎΠΌΠΎΡΠΈΡ Π΄Π»Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΌΡ Π΄ΠΈΡΠΊΡ (FileIOPermission), ΠΊΠ½ΠΎΠΏΠΊΠ° Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠΌΠ΅ΡΠ°ΡΡΡΡ ΠΊΠ°ΠΊ Π½Π΅Π΄ΠΎΡΡΡΠΏΠ½Π°Ρ (ΡΠ΅ΡΡΠΌ ΡΠ²Π΅ΡΠΎΠΌ).
Π ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΊΠΎΠ΄Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΡΠΎΡΠΌΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡ FileIOPermission, Π²ΡΠ·ΡΠ²Π°Π΅Ρ Π΅Π³ΠΎ ΠΌΠ΅ΡΠΎΠ΄ Demand() ΠΈ Π·Π°ΡΠ΅ΠΌ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ:
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Security;
using System.Security.Permissions;
namespace SecurityApp4 {
public class Form1 : System.Windows.Forms.Form {
private System.Windows.Forms.Button button1;
private System.ComponentModel.Container components;
public Form1() {
InitializeComponent();
try {
FileIOPermission fileioperm = new
FileIOPermission(FileIOPermissionAccess.AllAccess, @"C:\");
fileioperm.Demand();
} catch {
button1.Enabled = false;
}
}
public override void Dispose() {
base.Dispose();
if(component != null) components.Dispose();
}
#region Windows Form Designer generated code
/// <summary>
/// Π’ΡΠ΅Π±ΡΠ΅ΠΌΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ Π΄Π»Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° β Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΠΉΡΠ΅
/// ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΡΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π° Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ° ΠΊΠΎΠ΄Π°.
/// </summary >
private void InitializeComponent() {
this.button1 = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// button1
//
this.button1.Location = new System.Drawing.Point(48, 104);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(192, 23);
this.button1.TabIndex = 0;
this.button1.Text = "Button Requires FileIOPermission";
//
// Form1
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(292, 273);
this.Controls.AddRange(new System.Windows.Forms.Control[] {this.button1});
this.Name = "Form1";
this.Text = "Form1";
this.ResumeLayout(false);
}
#endregion
/// <summary>
/// ΠΡΠ½ΠΎΠ²Π½Π°Ρ ΡΠΎΡΠΊΠ° Π²Ρ ΠΎΠ΄Π° Π΄Π»Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
/// </summary >
[STAThread]
static void Main() {
Application.Run(new Form1());
}
}
}
ΠΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ FileIOPermission ΡΠΎΠ΄Π΅ΡΠΆΠΈΡΡΡ Π² ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅ ΠΈΠΌΠ΅Π½ System.Security.Permissions, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΈΠΌΠ΅Π΅Ρ Π²ΡΠ΅ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΏΠΎΠ»Π½ΠΎΠΌΠΎΡΠΈΠΉ, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΊΠ»Π°ΡΡΡ Π΄Π»Ρ Π΄Π΅ΠΊΠ»Π°ΡΠ°ΡΠΈΠ²Π½ΡΡ Π°ΡΡΠΈΠ±ΡΡΠΎΠ² ΠΏΠΎΠ»Π½ΠΎΠΌΠΎΡΠΈΠΉ ΠΈ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΏΡΠ°Π² (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ FileIOPermission, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΠ΅Π³ΠΎ, Π½ΡΠΆΠ΅Π½ Π½Π°ΠΌ ΠΏΠΎΠ»Π½ΡΠΉ Π΄ΠΎΡΡΡΠΏ ΠΈΠ»ΠΈ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ).
ΠΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Ρ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ Π΄ΠΈΡΠΊΠ°, Π³Π΄Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠ°Ρ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ° Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ ΡΠ°Π·ΡΠ΅ΡΠ°Π΅Ρ Π΄ΠΎΡΡΡΠΏ ΠΊ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ, ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
ΠΠΎ Π΅ΡΠ»ΠΈ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΉ ΡΠ°ΠΉΠ» Π½Π° ΡΠ΅ΡΠ΅Π²ΠΎΠΉ Π΄ΠΈΡΠΊ ΠΎΠ±ΡΠ΅Π³ΠΎ Π΄ΠΎΡΡΡΠΏΠ° ΠΈ ΡΠ½ΠΎΠ²Π° Π΅Π³ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ, ΡΠΎ ΠΎΠ½ Π±ΡΠ΄Π΅Ρ Π΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ Π²Π½ΡΡΡΠΈ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° ΠΏΠΎΠ»Π½ΠΎΠΌΠΎΡΠΈΠΉ LocalIntranet, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π±Π»ΠΎΠΊΠΈΡΡΠ΅Ρ Π΄ΠΎΡΡΡΠΏ ΠΊ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ, ΠΈ ΠΊΠ½ΠΎΠΏΠΊΠ° Π±ΡΠ΄Π΅Ρ Π½Π΅ΡΠ°Π±ΠΎΡΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΠΉ (ΡΠ΅ΡΠΎΠΉ):
ΠΡΠ»ΠΈ ΠΏΡΠΈ Π½Π°ΠΆΠ°ΡΠΈΠΈ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡ Π±ΡΠ»Π° ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ Π΄Π»Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ Π΄ΠΈΡΠΊΡ, Π½Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΏΠΈΡΠ°ΡΡ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ Π΄Π»Ρ ΡΠΈΡΡΠ΅ΠΌΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ ΠΊΠ»Π°ΡΡ Π² .NET Framework Π±ΡΠ΄Π΅Ρ Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°ΡΡ ΠΏΠΎΠ»Π½ΠΎΠΌΠΎΡΠΈΡ ΡΠ°ΠΉΠ»Π° ΠΈ CLR Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅Ρ, ΡΡΠΎ ΠΊΠ°ΠΆΠ΄ΡΠΉ Π²ΡΠ·ΡΠ²Π°ΡΡΠΈΠΉ Π² ΡΡΠ΅ΠΊΠ΅ Π±ΡΠ΄Π΅Ρ ΠΈΠΌΠ΅ΡΡ ΡΡΠΈ ΠΏΠΎΠ»Π½ΠΎΠΌΠΎΡΠΈΡ, ΠΏΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡ. ΠΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈΠ· ΠΈΠ½ΡΡΠ°Π½Π΅Ρ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΡΡΠ°Π΅ΡΡΡ ΠΎΡΠΊΡΡΡΡ ΡΠ°ΠΉΠ» Π½Π° Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΌ Π΄ΠΈΡΠΊΠ΅, Π±ΡΠ΄Π΅Ρ ΠΏΠΎΡΠΎΠΆΠ΄Π°ΡΡΡΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈ ΡΡΠ»ΠΎΠ²ΠΈΠΈ, ΡΡΠΎ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ° Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ Π½Π΅ Π±ΡΠ»Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π°.
ΠΡΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠΈ ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΡΠ²Π°ΡΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ, ΠΏΠΎΡΠΎΠΆΠ΄Π°Π΅ΠΌΡΠ΅ CLR, ΠΊΠΎΠ³Π΄Π° ΠΊΠΎΠ΄ ΠΏΡΡΠ°Π΅ΡΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ Π²ΠΎΠΏΡΠ΅ΠΊΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½Π½ΡΠΌ Π΅ΠΌΡ ΠΏΡΠ°Π²Π°ΠΌ, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΡΠ²Π°ΡΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠΈΠΏΠ° SecurityException, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΡΠ΄Ρ ΠΏΠΎΠ»Π΅Π·Π½ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ, Π²ΠΊΠ»ΡΡΠ°Ρ ΡΠΈΡΠ°Π΅ΠΌΡΡ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΠΎΠΌ ΡΡΠ°ΡΡΠΈΡΠΎΠ²ΠΊΡ ΡΡΠ΅ΠΊΠ° (SecurityException.StackTrace) ΠΈ ΡΡΡΠ»ΠΊΡ Π½Π° ΠΌΠ΅ΡΠΎΠ΄, ΠΏΠΎΡΠΎΠΆΠ΄Π°ΡΡΠΈΠΉ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ (SecurityException.TargetSite). SecurityException ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ°ΠΊΠΆΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ SecurityException.PermissionType, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΠ΅Π΅ ΡΠΈΠΏ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Permission, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΡΠΎΠΆΠ΄Π°Π΅Ρ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ.
ΠΠ°ΠΏΡΠ°ΡΠΈΠ²Π°Π΅ΠΌΡΠ΅ ΠΏΠΎΠ»Π½ΠΎΠΌΠΎΡΠΈΡ
ΠΠ°ΠΊ ΠΌΡ Π²ΠΈΠ΄Π΅Π»ΠΈ Π²ΡΡΠ΅, ΡΡΠ΅Π±ΡΠ΅ΠΌΡΠ΅ ΠΏΠΎΠ»Π½ΠΎΠΌΠΎΡΠΈΡ Π²ΠΏΠΎΠ»Π½Π΅ ΡΠ΅ΡΠΊΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ, ΡΡΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ±ΠΎΡΠΊΡ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ ΠΎΠ½Π° Π΄Π΅Π»Π°Π»Π° Π±ΠΎΠ»Π΅Π΅ ΠΌΡΠ³ΠΊΠΈΠΉ Π·Π°ΠΏΡΠΎΡ ΠΏΡΠ°Π² ΠΏΡΡΠΌΠΎ Π² Π½Π°ΡΠ°Π»Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ, Π³Π΄Π΅ ΠΎΠ½Π° ΠΎΠ±ΡΡΠ²Π»ΡΠ΅Ρ, ΡΡΠΎ Π΅ΠΉ Π½ΡΠΆΠ½ΠΎ: ΠΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡΠΎΡΠΈΡΡ ΠΏΠΎΠ»Π½ΠΎΠΌΠΎΡΠΈΡ ΡΡΠ΅ΠΌΡ ΡΠΏΠΎΡΠΎΠ±Π°ΠΌΠΈ:
β‘ ΠΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠ΅ ΠΏΠΎΠ»Π½ΠΎΠΌΠΎΡΠΈΡ (Mimimum) β ΠΏΠΎΠ»Π½ΠΎΠΌΠΎΡΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠ΅Π±ΡΡΡΡΡ ΠΊΠΎΠ΄Ρ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ.
β‘ ΠΠ΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΏΠΎΠ»Π½ΠΎΠΌΠΎΡΠΈΡ (Optional) β ΠΏΠΎΠ»Π½ΠΎΠΌΠΎΡΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ, Π½ΠΎ ΡΠΏΠΎΡΠΎΠ±Π΅Π½ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΠΈ Π±Π΅Π· Π½ΠΈΡ .
β‘ ΠΠ΅ΠΏΡΠΈΠ³ΠΎΠ΄Π½ΡΠ΅ ΠΏΠΎΠ»Π½ΠΎΠΌΠΎΡΠΈΡ (Refused) β ΠΏΠΎΠ»Π½ΠΎΠΌΠΎΡΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡΡΡ ΠΊΠΎΠ΄Ρ.
ΠΠΎΡΠ΅ΠΌΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°ΡΡ ΠΏΠΎΠ»Π½ΠΎΠΌΠΎΡΠΈΡ ΠΏΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ ΡΠ±ΠΎΡΠΊΠΈ? Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈΡΠΈΠ½:
β‘ ΠΡΠ»ΠΈ ΡΠ±ΠΎΡΠΊΠ΅ ΡΡΠ΅Π±ΡΡΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ»Π½ΠΎΠΌΠΎΡΠΈΡ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ, ΡΠΎ ΠΈΠΌΠ΅Π΅Ρ ΡΠΌΡΡΠ» ΡΠΎΠΎΠ±ΡΠΈΡΡ ΠΎΠ± ΡΡΠΎΠΌ Π² Π½Π°ΡΠ°Π»Π΅, Π° Π½Π΅ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ.
β‘ ΠΡΠ΄ΡΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½Ρ ΡΠΎΠ»ΡΠΊΠΎ Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°Π΅ΠΌΡΠ΅ ΠΏΠΎΠ»Π½ΠΎΠΌΠΎΡΠΈΡ ΠΈ Π½ΠΈΠΊΠ°ΠΊΠΈΠ΅ Π΄ΡΡΠ³ΠΈΠ΅. ΠΡΠΎ ΡΠΎΠΊΡΠ°ΡΠ°Π΅Ρ ΡΠΈΡΠΊ Π²ΠΎΠ·Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΡΠ±ΠΎΡΠΊΠΈ Π½Π° ΠΎΠ±Π»Π°ΡΡΠΈ, Π΄Π»Ρ ΠΊΠΎΡΠΎΡΡΡ Ρ Π½Π΅Π΅ Π½Π΅Ρ ΠΏΡΠ°Π².
β‘ ΠΡΠ»ΠΈ Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°Π΅ΡΡΡ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ Π½Π°Π±ΠΎΡ ΠΏΠΎΠ»Π½ΠΎΠΌΠΎΡΠΈΠΉ, ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΡΡΡ Π²Π΅ΡΠΎΡΡΠ½ΠΎΡΡΡ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΡΠ±ΠΎΡΠΊΠ° Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½Π°.
ΠΠ°ΠΏΡΠΎΡ ΠΏΠΎΠ»Π½ΠΎΠΌΠΎΡΠΈΠΉ ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ Π±ΡΠ΄Π΅Ρ ΡΠ΅ΠΌ Π½ΡΠΆΠ½Π΅Π΅, ΡΠ΅ΠΌ Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½Π°Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΡΡΡ, Π½ΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π²ΡΡΠΎΠΊΠΈΠΉ ΡΠΈΡΠΊ, ΡΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π±ΡΠ΄Π΅Ρ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΎ Π½Π° ΠΌΠ°ΡΠΈΠ½Π΅, ΠΊΠΎΡΠΎΡΠ°Ρ Π½Π΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ ΠΏΡΠ°Π². ΠΠ±ΡΡΠ½ΠΎ Π΄Π»Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠ΅Π΄ΠΏΠΎΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π·Π½Π°ΡΡ Π² ΡΠ°ΠΌΠΎΠΌ Π½Π°ΡΠ°Π»Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ, Π³Π΄Π΅ Π΅ΠΌΡ Π½Π΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½Ρ ΠΏΠΎΠ»Π½ΠΎΠΌΠΎΡΠΈΡ, Π° Π½Π΅ Π² ΡΠ΅ΡΠ΅Π΄ΠΈΠ½Π΅ ΠΏΡΠΎΡΠ΅ΡΡΠ° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ.
Π§ΡΠΎΠ±Ρ ΡΡΠΏΠ΅ΡΠ½ΠΎ Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°ΡΡ ΠΏΠΎΠ»Π½ΠΎΠΌΠΎΡΠΈΡ Π΄Π»Ρ ΡΠ±ΠΎΡΠΊΠΈ, Π½ΡΠΆΠ½ΠΎ ΡΠΎΡΠ½ΠΎ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°ΡΡ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΏΡΠ°Π²Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠ±ΠΎΡΠΊΠ°. Π ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π·Π½Π°ΡΡ ΠΎ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡΡ ΠΏΠΎΠ»Π½ΠΎΠΌΠΎΡΠΈΠΉ Π²ΡΠ·ΠΎΠ²ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π΄Π΅Π»Π°Π΅Ρ ΡΠ±ΠΎΡΠΊΠ° Π² Π΄ΡΡΠ³ΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°Ρ ΠΊΠ»Π°ΡΡΠΎΠ², Π²ΠΊΠ»ΡΡΠ°Ρ .NET Framework.
Π’ΡΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΠΈΠ· ΡΠ°ΠΉΠ»Π° AssemblyInfo.cs (ΡΠΌ. Π½ΠΈΠΆΠ΅) Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π°ΡΡΠΈΠ±ΡΡΠΎΠ² Π΄Π»Ρ Π·Π°ΠΏΡΠΎΡΠ° ΠΏΠΎΠ»Π½ΠΎΠΌΠΎΡΠΈΠΉ. ΠΡΠΈ ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Π² ΠΏΡΠΎΠ΅ΠΊΡΠ΅ SecurityΠΡΡ9 ΡΡΠ΅Π΄ΠΈ Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌΡΡ Ρ ΡΠ°ΠΉΡΠ° ΠΈΠ·Π΄Π°ΡΠ΅Π»ΡΡΡΠ²Π° Wrox ΡΠ°ΠΉΠ»ΠΎΠ². ΠΠ΅ΡΠ²ΡΠΉ Π°ΡΡΠΈΠ±ΡΡ Π²ΡΠ΄Π²ΠΈΠ³Π°Π΅Ρ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅, ΡΡΠΎΠ±Ρ ΡΠ±ΠΎΡΠΊΠ° ΠΈΠΌΠ΅Π»Π° UIPermission, ΡΡΠΎ Π΄Π°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ. ΠΠ°ΠΏΡΠΎΡ Π΄Π΅Π»Π°Π΅ΡΡΡ Π΄Π»Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΡ ΠΏΠΎΠ»Π½ΠΎΠΌΠΎΡΠΈΠΉ, Π° Π΅ΡΠ»ΠΈ ΡΡΠΎ ΠΏΡΠ°Π²ΠΎ Π½Π΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ, ΡΠΎ ΡΠ±ΠΎΡΠΊΠ° Π½Π΅ ΡΠΌΠΎΠΆΠ΅Ρ Π·Π°ΠΏΡΡΡΠΈΡΡΡΡ.