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.