Compartilhar via


Segurança e a entrada do usuário

Dados do usuário, que é qualquer tipo de entrada (dados de uma solicitação da Web ou URL, de entrada para controles de um aplicativo do Microsoft Windows Forms e assim por diante), negativamente pode influenciar o código porque muitas vezes esses dados são usados diretamente sistema autônomo parâmetros para chamar Outros código.Essa situação é análoga ao código mal intencionado chame seu código com estranhos parâmetros e as mesmas precauções que devem ser seguidas.Entrada do usuário é, na verdade, mais difícil de fazer seguro porque não há nenhum registro de ativação para rastrear a presença de dados potencialmente não confiáveis.

Eles estão entre os bugs de segurança subtlest e mais difícil localizar porque, embora eles podem existir em código que é aparentemente não relacionado à segurança, elas são um gateway para passar dados inválidos através para Outros código.Para procurar esses bugs, siga qualquer tipo de dados de entrada, imagine o que o intervalo de valores possíveis possam ser e considerar se o código vendo esses dados pode lidar com todos os casos.Você pode corrigir esses erros pelo intervalo de verificação e rejeitar qualquer entrada que não é possível manipular o código.

Algumas considerações importantes envolvendo dados de usuário incluem o seguinte:

  • Os dados de usuário uma resposta do servidor é executado no contexto do site do servidor no cliente.Se seu servidor Web leva dados do usuário e insere em página da Web retornada, ela pode, por exemplo, incluir um <script> marca e execute sistema autônomo se do servidor.

  • Lembre-se de que o cliente pode solicitar qualquer URL.

  • Considere os caminhos complicados ou é inválidos:

    • ..\, caminhos extremamente longos.

    • Uso de caracteres curinga (*).

    • Expansão de token (% token %).

    • Estranhos formulários de caminhos com significado especial.

    • Nomes de fluxo de sistema arquivo alternativo, sistema autônomo filename::$DATA.

    • Curtas versões dos nomes de arquivo, sistema autônomo longfi~1 para longfilename.

  • Lembre-se de que Eval(userdata) pode fazer nada.

  • Cuidado recentes ligação a um nome que inclui alguns dados do usuário.

  • Se você estiver lidando com dados da Web, considere as diversas formas de escapa é permitidas, incluindo:

    • Escapa hexadecimal (% nn).

    • Sai do Unicode (nnn %).

    • Escapa overlong do UTF-8 (% nn % nn).

    • Escapa dupla (% nn torna-se mmnn %, onde % mm é o escape para '%').

  • Desconfie de nomes de usuários que podem ter mais de um formato canônico.Por exemplo, no Microsoft Windows 2000, você pode normalmente usar ambos o MYDOMAIN\ nome de usuário formulário ou o nome de usuário @mydomain.example.com formulário.

Consulte também

Outros recursos

Diretrizes para Codificação Segura