Pergunta

O que são as melhores maneiras (ou pelo menos maneiras mais comuns) em ASP (VBScript) para a manipulação de entrada? As minhas principais preocupações são HTML / JavaScript injeções & injeções SQL. Existe algum equivalente a htmlspecialchars ou addslashes do PHP, et cetera? Ou eu tenho que fazê-lo manualmente com algo parecido com texto de substituição funções?

Foi útil?

Solução

A linha de fundo é esta:

  1. Sempre HTML-codificar a entrada do usuário antes de escrevê-lo para a sua página. Server.HTMLEncode() faz isso para você.
  2. Sempre usar consultas para fazer a interface com um banco de dados parametrizados. Os ÀDODB.Command e ADODB.CommandParameter objetos são a escolha certa aqui.
  3. Sempre usar o utilitário URLScan e bloqueio do IIS no servidor que renderiza a página, a menos que sejam versão 6 e acima, que não requerem essas ferramentas mais IIS.

Se você ficar com os pontos 1 e 2 servilmente , eu não posso pensar em muita coisa que pode dar errado.

A maioria das vulnerabilidades vêm de não codificar corretamente a entrada do usuário ou a construção de cadeias SQL a partir dele. Se você por algum motivo chegar ao ponto onde HTML-codificação de entrada do usuário está em seu caminho, você encontrou uma falha de projeto na sua aplicação.

Outras dicas

Gostaria de acrescentar à lista Tomalaks um outro ponto.

Evite usar concatenação de valores de campo no código SQL. Isto é, em alguns casos, um procedimento armazenado pode construir alguns SQL em uma string para posteriormente executar. Isso é bom, a menos que um valor campo de texto é usado como parte de sua construção.

Um parâmetro de comando pode proteger o código SQL concebida para introduzir um valor de ser sequestrado em execução SQL indesejado, mas ele permite que tais SQL indesejados para tornar-se os dados no banco de dados. Esta é uma vunerability de primeiro nível. Existe uma vunerability injeção de segundo nível se o valor do campo é então usado em alguns concatenação SQL dentro de um procedimento armazenado.

Outra consideração é que este é apenas proteção mínima. Todos os seus fazendo é tornando tentativas de ataque inofensivo. No entanto, em muitos casos, pode ser melhor para adicionar a isso um sistema que impede que tais Altogther entrada de dados e / ou altera os administradores a um potencial ataque de injeção.

Este é o lugar onde a validação de entrada torna-se importante. Eu não sei de todas as ferramentas que fazem isso para você, mas algumas simples expressões regulares pode ajudar. Por exemplo, "<\ w +" seria detectar a tentativa de incluir uma tag HTML no campo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top