Segurança do Acesso ao código ASP.NET
Um dos benefícios do uso do ASP.NET para hospedar vários sites da Web é o suporte na Common Language Runtime (CLR) para segurança de acesso a código para ajudar a proteger os aplicativos de servidor.O código é atribuído a uma classificação de zona de segurança com base na evidência sobre o código de origem, como um nome forte de um conjunto de módulos (assembly) ou o código do URL de origem.
Aplicativos que são executados com confiança total ainda podem ser restrito por permissões de arquivo NTFS, permissões de banco de dados e assim por diante usando a conta do Windows (a identidade do processo ASP.NET) em que eles estão sendo executados.Para obter mais informações, consulte Configurando Identidade de Processo do ASP.NET.
Em geral, você pode configurar segurança de acesso a código de um conjunto individual e torná-lo um conjunto de módulos (assembly) de nome de alta segurança adicionando diretiva de segurança para aquele assembly.No entanto, muitos conjuntos do ASP.NET são gerados dinamicamente durante a compilação de página e, portanto, não são nomeados fortemente, portanto, você deve configurar diretiva de segurança para esses conjuntos de módulos (assemblies) indiretamente.Além disso, como o ASP.NET oferece suporte para aplicativos de não compilação, assembly com base em evidência não é suportada.Como os aplicativos ASP.NET incluem o conceito de estruturas de diretório, é muito mais fácil configurar segurança de acesso a código baseda nas categorias de aplicativos ASP.NET quanto configurar manualmente o .NET Framework para trabalhar separadamente com cada aplicativo ASP.NET em um computador separadamente.
Para cada aplicativo, o ASP.NET permite que você atribuir um nível de confiança configurável que corresponde a um conjunto predefinido de permissões.Por padrão, aplicativos recebem um nível de confiança de acordo com a evidência que apresentam.Se você desejar executar um aplicativo da Web com menor do que o conjunto de permissões Full, você deve use um dos níveis de confiança predefinida definidos em Níveis de confiança ASP.NET e arquivos de diretiva para impor uma diretiva de confiança parcial.
Você pode usar as seguintes configurações no arquivo web.config do aplicativo para substituir o comportamento padrão e associar um aplicativo com um determinado diretiva de segurança:
<location path="SampleApp" allowOverride="false">
<trust level="High"
originUrl="https://www.contoso.com"/>
</location>
O elemento de configuração Trust pode ser aplicado ao nível de máquina (neste caso todos os aplicativos ASP.NET serão executado neste nível de confiança) ou para qualquer aplicativo diretório raiz na hierarquia (neste caso o nível de confiança aplica-se ao aplicativo ASP.NET específico).Se você desejar definir diretiva para um site inteiro, você pode fazê-lo editando o arquivo web.config para o aplicativo de raiz do site e especificando a raiz do site como o caminho local, como no exemplo a seguir:
<location path="ContosoSite" allowOverride="false">
<trust level="High"
originUrl="https://www.contoso.com"/>
</location>
É recomendável que você defina o atributo level do elemento de configuração trust como High para sites que são confiáveis.Para sites que não são confiáveis, como um servidor Web que hospeda sites que executa código a partir de um cliente externo, é recomendável que você defina o atributo level do elemento trust de configuração para Medium.Para obter uma descrição detalhada de executar aplicativos ASP.NET em meio confia, consulte "How To: Usar confiança média no ASP.NET 2.0 "emPadrões e práticas (PAG): Orientações de segurança para aplicativos.
Se você estiver configurando as configurações de confiabilidade no nível do computador ou site, você normalmente define o atributo allowOverride para false no elemento location, para que aplicativos individuais não seja capazes especificar seus próprios níveis de confiança.Isso é normal em instalações de servidor compartilhado.
A tabela a seguir lista os atributos padrões com suporte para o elemento de configuração Trust.
Atributo |
Descrição |
Valores com suporte |
---|---|---|
level |
Especifica a zona de segurança na qual o aplicativo será executado. |
Full, High, Medium, Low, e Minimal. |
originUrl |
Especifica um URL ou URL padrão que é permitido para conectar-se o acesso usando classes no namespace System.Net.Se estiver presente, esse atributo pode ser usado para verificar permissões para alguns objetos, como uma instância WebRequest, que permite a conectividade para diversos locais de rede.Por exemplo, você pode configurar esse atributo com o nome de host dos servidores em um Web farm para que as páginas ASP.NET possam chamar serviços da Web implantados no mesmo Web farm como aplicativo da Web. |
URLs HTTP bem-formados, ou a sintaxe com base regex que é suportado pelo WebPermissionAttribute. |
A tabela a seguir lista tipos de permissões suportados pela CLR e a diretiva padrão para cada permissão em níveis diferentes de confiança.
Permissão |
Total |
Alto |
Médio |
Baixo |
Mínimo |
---|---|---|---|---|---|
Total |
Alto |
Médio |
Baixo |
Mínimo |
|
Irrestrito: |
Irrestrito: |
Nenhuma permissão |
Nenhuma permissão |
Nenhuma permissão |
|
Irrestrito: |
Irrestrito: |
Irrestrito: |
Nenhuma permissão |
Nenhuma permissão |
|
Irrestrito: |
Irrestrito: |
Read Temp, TMP, sistema operacional, nome de usuário, nome_do_computador |
Nenhuma permissão |
Nenhuma permissão |
|
Irrestrito: |
Irrestrito: |
Read, Write, Append, PathDiscovery: Diretório aplicativo |
Read, PathDiscovery: Diretório de aplicativos |
Nenhuma permissão |
|
Irrestrito: |
Irrestrito: |
AssemblyIsolationByUserIrrestrito: UserQuota |
UserQuota 1 MB (pode ser alterado para sites individuais), AssemblyIsolationByUser |
Nenhuma permissão |
|
Irrestrito: |
Nenhuma permissão |
Nenhuma permissão |
|||
Irrestrito: |
Nenhuma permissão |
Nenhuma permissão |
Nenhuma permissão |
||
Irrestrito: |
Irrestrito: |
Nenhuma permissão |
Nenhuma permissão |
Nenhuma permissão |
|
Irrestrito: |
Execution, Assertion, ControlPrincipal, ControlThread, RemotingConfiguration |
Execution, Assertion, ControlPrincipal, ControlThread, RemotingConfiguration |
|||
Irrestrito: |
Nenhuma permissão |
Nenhuma permissão |
|||
Irrestrito: |
Irrestrito: |
Nenhuma permissão |
Nenhuma permissão |
Nenhuma permissão |
|
Irrestrito: |
Irrestrito: |
Connect ao host de origem (se configurado). |
Nenhuma permissão |
Nenhuma permissão |
|
Irrestrito: |
Irrestrito: |
Irrestrito: |
Nenhuma permissão |
Nenhuma permissão |
|
Log de Eventos |
Irrestrito: |
Nenhuma permissão |
Nenhuma permissão |
Nenhuma permissão |
Nenhuma permissão |
Filas de mensagens |
Irrestrito: |
Nenhuma permissão |
Nenhuma permissão |
Nenhuma permissão |
Nenhuma permissão |
Controlador de serviço |
Irrestrito: |
Nenhuma permissão |
Nenhuma permissão |
Nenhuma permissão |
Nenhuma permissão |
Contadores de desempenho |
Irrestrito: |
Nenhuma permissão |
Nenhuma permissão |
Nenhuma permissão |
Nenhuma permissão |
Serviços de diretório |
Irrestrito: |
Nenhuma permissão |
Nenhuma permissão |
Nenhuma permissão |
Nenhuma permissão |
Quando um nível de permissão está disponível, mas não explicitamente mencionado na diretiva de segurança, aplicativos executados com permissões Full sempre poderão usá-lo.Aplicativos executados com níveis de confiança inferiores não poderão usar os recursos, a menos que você conceda a eles permissões explícitas alterando a diretiva de segurança.
Como mostra a tabela, o aplicativo com High permissão conjuntos possuem Leitura/Gravação permissão para arquivos em seus diretórios de aplicativos e Low confiança aplicativos têm permissão somente leitura para arquivos em seus diretórios de aplicativos.Devido o tipo FileIOPermission depender de um caminho físico (por exemplo, c:\SampleAppPath), o ASP.NET usa uma instrução tokenized nos arquivos de diretiva que é substituída em tempo de execução com informações relevantes de caminho para o aplicativo.
O tipo WebPermission permite que o aplicativo se conecte ao local de rede definido pelo atributo original de host, usando classes como System.Net.WebRequest.No ASP.NET, você pode configurar essa permissão, fornecendo um atributo opcional originUrl na seção Trust para um determinado aplicativo.O atributo originUrl substituirá a variável $OriginHost$ em arquivos de diretiva, conforme mostrado na seção a seguir do arquivo Web_hightrust.config:
<IPermission class="WebPermission" version="1">
<ConnectAccess>
<URI uri="$OriginHost$"/>
</ConnectAccess>
</IPermission>