Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Os dados do usuário, que são qualquer tipo de entrada (dados de uma solicitação da Web ou URL, entrada em controles de um aplicativo do Microsoft Windows Forms e assim por diante), podem influenciar negativamente o código porque, muitas vezes, esses dados são usados diretamente como parâmetros para chamar outro código. Essa situação é análoga ao código mal-intencionado que chama seu código com parâmetros estranhos e as mesmas precauções devem ser tomadas. Na verdade, a entrada de usuário é mais difícil de tornar segura porque não há nenhum registro de ativação para rastrear a presença dos dados potencialmente não confiáveis.
Eles estão entre os bugs de segurança mais sutis e difíceis de encontrar porque, embora possam existir em código aparentemente não relacionado à segurança, eles são um gateway para passar dados incorretos para outro código. Para procurar esses bugs, siga qualquer tipo de dados de entrada, imagine qual é o intervalo de valores possíveis e considere se o código que está vendo esses dados pode lidar com todos esses casos. Você pode corrigir esses bugs por meio da verificação de intervalo e da rejeição de qualquer entrada que o código não possa manipular.
Algumas considerações importantes envolvendo dados do usuário incluem o seguinte:
Todos os dados do usuário em uma resposta de servidor são executados no contexto do site do servidor no cliente. Se o servidor Web usa dados do usuário e os insere na página da Web retornada, ele pode, por exemplo, incluir uma
<script>marca e executar como se fosse do servidor.Lembre-se de que o cliente pode solicitar qualquer URL.
Considere caminhos complicados ou inválidos:
..\ , caminhos extremamente longos.
Uso de caracteres curinga (*).
Expansão de token (%token%).
Formas estranhas de caminhos com significado especial.
Nomes alternativos de fluxo do sistema de arquivos, como
filename::$DATA.Versões curtas de nomes de arquivo, como
longfi~1paralongfilename.
Lembre-se de que Eval(userdata) pode fazer qualquer coisa.
Tenha cuidado com a associação tardia a um nome que inclua alguns dados do usuário.
Se você estiver lidando com dados da Web, considere as várias formas de escape que são permitidas, incluindo:
Escapes hexadecimais (%nn).
Escapes Unicode (%nnn).
Escapes UTF-8 ao longo do tempo (%nn%nn).
Escapes duplos (%nn torna-se %mmnn, onde %mm é a fuga de '%').
Tenha cuidado com nomes de usuário que podem ter mais de um formato canônico. Por exemplo, geralmente você pode usar o formulário MYDOMAIN\username ou o formulário username@mydomain.example.com.