Protegendo propriedades de perfil
Você pode usar o recurso de perfil do ASP.NET para armazenar e recuperar Configurações de Usuário em um fonte de dados such as um banco de dados.Você especifica as propriedades e os grupos que compõem perfis de usuário no arquivo de configuração do aplicativo.Em tempo de execução, o ASP.NET usa as informações de configuração para gerar dinamicamente uma classe com acessadores rigidamente tipados para cada propriedade de perfil.Essa classe é exposta, em seguida, usando a propriedade Profile estática.Valores de propriedade de perfil são armazenados por um provedor de perfil em uma fonte de dados, seja em texto limpo XML ou no formato binário serializado.
Você pode melhorar a segurança do seu aplicativo pela seguinte codificação e práticas recomendadas de configuração.Também é importante que você continuamente manter seu aplicativo servidor Web-se atualizado com as atualizações de segurança mais recentes para o Microsoft Windows e Microsoft Internet Information Services (IIS), bem como com quaisquer atualizações para Microsoft SQL Server ou outro perfil fontes de dados.
Para obter mais informações sobre as práticas recomendadas para escrever código seguro e segurança de aplicativos, consulte o livro Escrevendo código seguro de Michael Howard e David LeBlanc e siga as sugestões fornecidas no Microsoft padrões e práticas (https://www.Microsoft.com/Recursos/practices/padrão.mspx).
Configuração de Perfis de Segurança
O recurso do perfil do ASP.NET é habilitado por padrão.Embora as configurações padrão sejam definidas para os valores mais seguros, recomendamos que você desabilite o recurso de perfil de usuário se ele não for necessário para o seu aplicativo.Para obter informações sobre configurações de perfis e seus valores padrão, consulte Elemento profile (Esquema de configurações do ASP.NET).Identificação anônima, que pode ser definida para propriedades de perfil, é desativada por padrão.Para obter mais informações sobre configurações de identificação anônima e seus valores padrão, consulte anonymousIdentification elemento (esquema configurações ASP.NET).
Protegendo Valores de Configuração
Ao armazenar informações confidenciais em um arquivo de configuração para um aplicativo, nós recomendamos que você criptografe os valores confidenciais usando a configuração protegida.Informações que são especialmente confidenciais incluem as chaves de criptografia armazenadas no elemento de configuração machineKey e sequências de conexão a uma fonte de dados armazenada no elemento de configuração connectionStrings.Para obter mais informações, consulte Criptografando informações de configuração usando configuração protegida.
Protegendo Conexões com uma Fonte de Dados de Perfis
Sequências de conexão
Conforme observado, é importante proteger as informações sigilosas armazenadas em uma sequência de conexão que é usada para se comunicar com um computador executando a outra fonte de dados ou o SQL Server.Para manter a conexão para a segurança de seu banco de dados, nós recomendamos que você criptografe as informações da sequência de conexão na configuração usando configuração protegida.Para obter mais informações, consulte Criptografando informações de configuração usando configuração protegida.
Conectando-se ao SQL Server usando segurança integrada
Nó recomendamo que você use segurança integrada para se conectar a computadores executando o SQL Server, para impedir sua sequência de conexão de ser comprometida e de nenhuma identificação de usuário e informações de senha serem expostas.Quando você especifica uma conexão que usa segurança integrada para conectar-se a um computador que executa o SQL Server, o provedor de perfil reverte para a identidade do processo.Nós recomendamos que você certifique-se que a identidade do processo que está executando o ASP.NET (por exemplo, o pool de aplicativos) é a conta do processo padrão ou uma conta de usuário restrito.Para obter mais informações, consulte ASP.NET Impersonation.
Permissões de banco de dados SQL Server
O banco de dados do SQL Server que é usado por padrão para armazenar as informações do perfil inclui atribuições de banco de dados e modos de exibição que permitem que você restrinja o acesso de usuário somente aos privilégios necessários para seu aplicativo.Nó recomandamos que você atribua os privilégios necessários mínimos à identificação de usuário que se conecta ao banco de dados de perfil do SQL Server.Para obter mais informações, consulte Funções e Exibições no Banco de Dados do Servidor de Aplicativos para o SQL Server.
Protegendo Dados Confidenciais na Fonte de Dados de Perfil
O provedor de perfil do usuário padrão não criptografa os valores armazenados no fonte de dados o perfil.Recomendamos que você criptografe qualquer informações sigilosas antes de armazená-as na fonte de dados de perfil, para evitar expor as informações sigilosas se a fonte de dados for comprometida.Você pode criptografar dados confidenciais antes de armazenar o valor na propriedade de perfil ou você pode estender as classes ProfileBase ou ProfileProvider para fornecer recursos de criptografia.
Impedindo Dados de Perfil Anônimo de Ser Compartilhado entre Aplicativos
Se a identificação anônima é ativada para um aplicativo e propriedades do perfil usadas por este aplicativo, haverá um risco que os valores de propriedade do perfil anônimo possam ser expostos a outro aplicativo.Isso pode ocorrer quando o atributo cookiePath de identificação anônima é definido como um caminho que inclui vários aplicativos e quando existem vários aplicativos em um domínio comum.
Quando você usa identificação anônima com perfis de usuário e pretende separar usuários anônimos entre aplicativos, recomendamos que você especifique chaves de criptografia separadas no elemento machineKey para cada aplicativo, defina o escopo do cookie de identificação anônima para um aplicativo específico e defina a propriedade ApplicationName como um valor diferente para cada aplicativo.
Protegendo Páginas da Web que Usam Perfis
Páginas de aplicativo que trabalham com dados confidenciais armazenados em propriedades de perfis devem ser protegidas usando mecanismos de segurança Web padrões.Eles incluem o uso de Secure Sockets Layer (SSL) e exigem que os usuários tenham efetuado logon para executar operações confidenciais como atualização de informações do usuário ou exclusão de usuários.Além disso, evite armazenar dados confidenciais em cookies.
Protegendo Contra a Negação do Ataque de Serviço
Métodos da classe ProfileManager que executam atualizações ou operações de pesquisa de execução demorada podem reduzir a capacidade de resposta da sua fonte de dados de perfis se os métodos são chamados simultaneamente por um grande número de clientes.Para reduzir a exposição do seu aplicativo para um ataque de negação de serviço, permitir que usuários administrativos somente para acessar páginas ASP.NET que executam atualizações do banco de dados ou pesquisas associadas com os perfis.
Mensagens de Erro e Eventos
Exceções
Para evitar informações confidenciais de serem expostas, configure seu aplicativo para não exibir mensagens de erro detalhadas ou para exibir mensagens de erro detalhadas somente quando o aplicativo está rodando localmente no servidor Web.Para obter mais informações, consulte o elemento de configuração CustomErrors.
Log de Eventos
O recurso de perfil do ASP.NET registra informações para determinadas condições de erro usando monitoramento da integridade do ASP.NET, que, por padrão, armazena informações no log de eventos.Se o computador do servidor está executando o Windows Server 2003, você pode melhorar a segurança do seu aplicativo, assegurando o log de eventos e configurando parâmetros sobre o tamanho, retenção, e assim por diante para impedir uma negação indireta do ataque de serviço contra o log de eventos.
Trace Information (Informações de Rastreamento)
O servidor Web pode ser configurado para rastreamento quando certas ações ocorrem sobre o recurso de perfil e armazenam as informações de rastreamento em um arquivo de log.Como informações sigilosas such as os nomes de usuário podem ser armazenados em arquivo de log de rastreamento, recomendamos que você permita apenas os administradores ativar o rastreamento, para configurar o local de arquivo de log de rastreamento e para acessar a arquivo de log de rastreamento.
Provedores de perfis personalizados
Quando criar uma provedor de perfil personalizado para acessar o banco de dados, certifique-se que você seguiu as práticas de segurança recomendadas para evitar ataques, como ataques de inclusão SQL.Quando fizer uso de um provedor de função personalizado, certifique-se de que o provedor foi revisado para práticas de segurança recomendadas.
Consulte também
Conceitos
Visão geral sobre propriedades de perfil do ASP.NET