|
Este artigo foi traduzido por máquina. Coloque o ponteiro do mouse sobre as frases do artigo para ver o texto original. Mais informações.
|
Tradução
Original
|
Protegendo controles padrão
Se você estiver usando um arquivo XML para armazenar informações de anúncio, coloque o arquivo na pasta App_Data do site, porque o conteúdo da pasta não serão oferecidos em resposta às solicitações Web. Para proteção extra, não use a extensão .xml em arquivos de anúncio. Em vez disso, use uma extensão como.ads, e então mapeie a extensão.ads para ASP.NET no IIS e para o manipulador proibído no ASP.NET usando o seguinte elemento no arquivo Web.config do site: <httpHandlers> <add verb="*" path="*.ads" type="System.Web.HttpForbiddenHandler" /> </httpHandlers>
Para obter informações sobre como mapear uma extensão de nome de arquivo para o ASP.NET no IIS, consulte Como: Registrar manipuladores HTTP. Defina as permissões apropriadas para a conta de usuário ou contas que irão ler o arquivo de anúncio normalmente (somente para leitura). Se o site oferece suporte para acesso anônimo, geralmente é a conta de usuário ASPNET local ou a conta NETWORK SERVICE. Se o arquivo de anúncio não existir, o controle AdRotator gera um erro que exibe o caminho e o nome do arquivo, que revela informações possivelmente sigilosas. Evitar esse problema seguindo técnicas adequadas de tratamento de erros, incluindo configuração do elemento customErrors no arquivo de configuração para redirecionar a uma página de erro personalizada e criar um manipulador de erro global que é chamado se uma exceção não tratada ocorrer em qualquer lugar no aplicativo. Para obter detalhes, consulte:Como: Exibição Safe erro Messages. Se você está lendo informações de anúncio de um banco de dados, siga as diretrizes para proteger o acesso ao banco de dados. Para obter detalhes, consulte:Proteção de acesso a dados. Examine cuidadosamente quaisquer informações do anúncio que obter de uma fonte não confiável antes de usá-lo com o controle AdRotator. Porque o controle AdRotator não realiza qualquer validação ou verificação das informações que ele lê a partir do arquivo de anúncio, ele processa imagens e URLs para o página da Web exatamente como aparecem no arquivo do anúncio ou banco de dados.
Se os controles leem de um banco de dados, siga as diretrizes para proteger o acesso ao banco de dados. Para obter detalhes, consulte:Proteção de acesso a dados. Se não tiver certeza se as informações a serem exibidas contém script ou outras marcações, manipule o controle do evento DataBinding e codifique as informações em HTML antes de exibi-lo. Para obter detalhes, consulte:Como: Proteger contra exploits script em um aplicativo Web da Web, Applying HTML Encoding to Strings. Se o controle BulletedList está configurado para exibir elementos gráficos ou hiperlinks, certifique-se que a URL para o gráfico ou o vínculo aponta para uma localidade confiável.
Não confiar em arquivos que são carregados por usuários; usuários mal-intencionados podem tentar carregar arquivos executáveis. Quando você salva um arquivo carregado, verifique sua extensão de nome ou atribuia sua própria extensão para o arquivo. Não permita que os usuários especifiquem um caminho arbitrário para a localidade ao salvar o arquivo carregado. Verifique se o nome do arquivo contém somente informações de caminho que você mesmo adicionou. Não revelar a estrutura interna do seu site Web aos usuários que estão carregando arquivos. Definir permissões de leitura/gravação para a conta de usuário ou contas que forem executar o aplicativo na pasta ou pastas onde os arquivos carregados serão salvos. Se o site oferece suporte a acesso anônimo, isso é geralmente a conta de usuário ASPNET local ou a conta NETWORK SERVICE. No entanto, limite as permissões de leitura/gravação somente para a pasta ou pastas onde o aplicativo armazena arquivos carregados. Proteja-se contra ataques de negação de serviço definindo o atributo maxRequestLength do elemento httpRuntime no arquivo de configuração. Por padrão, o comprimento máximo solicitação é 4 megabytes (MB). Outras configurações que podem afetar o tamanho dos arquivos carregados são os atributos requestLengthDiskThreshold do elemento httpRuntime e o atributo memoryLimit do elemento processModel. Determine o tamanho do arquivo carregado consultando a propriedade ContentLength do objeto HttpPostedFile retornado pelo controle, e use o tamanho para decidir se deve aceitar o arquivo.
Não armazene informações sigilosas em controles HiddenField. Embora as informações não estejam visíveis no navegador, ela é parte da página e os usuários podem facilmente exibi-las no código fonte da página. Não confie informações nos campos ocultos. Usuários mal-intencionados podem alterar de forma maliciosa o conteúdo dos campos ocultos.
Defina a propriedade LiteralMode do controle para Encode, que codifica automaticamente conteúdo HTML. Use codificação HTML para converter o HTML em sua representação de texto. Para obter detalhes, consulte:Como: Proteger contra exploits script em um aplicativo Web da Web, Applying HTML Encoding to Strings.
Use controles de validação sempre que possível para limitar a entrada dos usuários para valores aceitáveis. Para obter detalhes, consulte:Introdução aos controles de validação. Certifique-se de que a propriedade IsValid é definida como true antes de executar o código do servidor. Use validação redundante de servidor. Isso é especialmente verdadeiro para controles CustomValidator; não crie apenas lógica da validação do lado do cliente. Defina a propriedade TextBox do controle MaxLength para limitar a quantidade de texto que os usuários podem inserir. Usuários mal-intencionados podem afetar o desempenho de seu aplicativo e potencialmente causar erros de banco de dados através do envio de grandes quantidades de informações em uma caixa de texto. Codifique a entrada do usuário com o método HtmlEncode, que transforma HTML em sua representação de texto (por exemplo, <b> torna-se <b>), e ajuda a impedir que o HTML seja executado em um navegador. Para obter detalhes, consulte:Como: Proteger contra exploits script em um aplicativo Web da Web, Applying HTML Encoding to Strings. Defina a propriedade TextMode como Password para impedir que o conteúdo da caixa de texto seja exibido na caixa de texto (exibindo pontos). Observe que definir a propriedade TextMode como Password não fornece nenhuma outra proteção; o conteúdo do caixa de texto não é criptografado ou ofuscado, e as informações são enviadas para o servidor como texto limpo. Portanto, ao usar Password, forneça métodos adicionais para garantir que os dados sejam protegidos. Se você está coletando informações confidenciais, como uma senha ou número de cartão de crédito, use Secure Sockets Layer (SSL) para proteger a comunicação entre o cliente e servidor. Isso se aplica a qualquer uso de controles TextBox, incluindo os controles que incorporem controles TextBox, como o controle CreateUserWizard.
O Wizard não protege informações sigilosas inerentemente. Se você está coletando dados confidenciais no assistente, use SSL para comunicação segura entre o cliente e servidor para a página que contém o Wizard. Para oferecer suporte à sua funcionalidade, o controle Wizard inclui um número de controles não visível. Possivelmente um usuário pode manipular esses controles e seus valores para exibir etapas do assistente fora de ordem ou para exibir etapas do assistente que devem ser exibidas para apenas alguns usuários. Para ajudar a evitar isso, certifique-se de que as etapas do assistente sejam exibidas na ordem correta, e etapas com informações confidenciais que não são exibidas a menos que sejam aplicadas as condições corretas.
Quando você está exibindo o conteúdo de um arquivo XML, se for praticável, coloque o arquivo XML na pasta App_Data do site porque o conteúdo da pasta não será enviado em resposta às solicitações Web. Exiba XML somente de fontes confiáveis. Use transformações somente de fontes confiáveis.