Coisas a ter em mente ao desenvolver páginas web com ASP Amigos que usam ASP podem dar uma olhada nas etapas.
1. Nunca confie que a entrada do usuário tenha o tamanho apropriado ou contenha os caracteres apropriados. A entrada do usuário deve sempre ser validada antes de ser usada para tomar decisões. Sua melhor opção é criar um componente COM+ que você possa chamar de uma página ASP para validar a entrada do usuário. Você também pode usar o método Server.HTMLEncode, o método Server.URLEncode ou um dos exemplos de código na parte inferior desta página.
2. Não crie a string de conexão do banco de dados na página ASP concatenando a string inserida pelo usuário. Usuários mal-intencionados podem obter acesso ao banco de dados inserindo código em suas entradas. Se você estiver usando um banco de dados SQL, use um procedimento armazenado para criar a cadeia de conexão do banco de dados.
3. Não use o nome de conta de administrador SQL padrão sa. Todo mundo que usa SQL sabe que a conta sa existe. Crie outra conta de gerenciamento SQL com uma senha segura e exclua a conta sa.
4. Antes de armazenar senhas de usuários do cliente, use um algoritmo hash, codificação base64 ou use Server.HTMLEncode ou Server.URLEncode para codificar essas senhas. Você também pode usar um dos exemplos de código na parte inferior desta página para verificar os caracteres do segredo do cliente.
5. Não coloque nomes de contas administrativas ou senhas em scripts administrativos ou páginas ASP.
6. Não tome decisões em seu código com base em cabeçalhos de solicitação, pois os dados do cabeçalho podem ser falsificados por usuários mal-intencionados. Sempre codifique os dados da solicitação antes de usá-los ou verifique os caracteres que eles contêm usando o exemplo de código abaixo.
7. Não armazene dados de segurança em cookies nem oculte campos de entrada em páginas da web.
Sempre use Secure Sockets Layer (SSL) com aplicativos baseados em sessão para evitar o risco de enviar cookies de sessão sem criptografá-los. Se o cookie de sessão não estiver criptografado, um usuário mal-intencionado poderá usar um cookie de sessão em um aplicativo para obter acesso a outro aplicativo no mesmo processo.
8. Ao escrever aplicativos ISAPI, filtros ou objetos COM+, esteja ciente dos estouros de buffer devido ao tamanho das variáveis e dos dados. Esteja ciente também dos problemas de canonização que podem resultar da interpretação, como a interpretação de nomes de caminhos absolutos como nomes de caminhos ou URLs relativos.
9. Quando um aplicativo ASP em execução em um apartamento de thread único (STA) é alternado para um apartamento de thread único (MTA), o token de representação se tornará obsoleto. Isso pode fazer com que o aplicativo seja executado sem representação, permitindo que ele seja executado efetivamente com a identidade do processo que pode permitir o acesso a outros recursos. Se você precisar alternar os modelos de threading, desative e desinstale o aplicativo antes de fazer a alteração.
exemplo de código
Este exemplo de código contém uma função que remove caracteres potencialmente prejudiciais de uma string enviada para a função. Nos dois exemplos acima, especifique a página de código para garantir a codificação correta. O exemplo a seguir usa o Microsoft Visual Basic® Scripting Edition (VBScript):
<%@LANGUAGE=VBScript%> <% Resposta.CodePage = 1252 Response.Write(Olá, & RemoveBadCharacters(Request.Form(UserName))) Response.Write(<BR>É por isso que você recebeu um erro :) Função RemoveBadCharacters(strTemp) Escurecer regEx Definir regEx = Novo RegExp regEx.Pattern = [^/s/w] regEx.Global = Verdadeiro RemoveBadCharacters = regEx.Replace(strTemp, ) Função final %> |
O exemplo a seguir usa Microsoft JScript®:
<%@LANGUAGE=JScript%> <% Response.CodePage = 1252; Response.Write(Olá, + RemoveBadCharacters(Request.Form(UserName))); Response.Write(<BR>É por isso que você recebeu um erro:); função RemoveBadCharacters(strTemp) { strTemp = strTemp.replace(/[^/s/w]/g,); retornar strTemp; } %> |