Desenvolver sites ASP com Dreamweaver é simples e fácil de usar. Os novatos podem compilar um site dinâmico que parece perfeito em pouco tempo. Em termos de funções, os novatos também podem fazer o que os veteranos podem fazer. Então não há diferença entre novatos e veteranos? A diferença aqui é enorme, mas é difícil para um leigo perceber isso de relance. A simpatia da interface, o desempenho operacional e a segurança do site são os três principais pontos que distinguem os usuários novatos dos experientes.
Em termos de segurança, o problema mais facilmente esquecido pelos novatos são as vulnerabilidades de injeção de SQL. Usando o NBSI 2.0 para verificar alguns sites ASP na Internet, você pode descobrir que muitos sites ASP apresentam vulnerabilidades de injeção de SQL.
A chamada injeção de SQL visa aproveitar as lacunas de design, como a negligência dos programadores ou a não detecção da legalidade dos dados de entrada do usuário, enviar deliberadamente código especial (comandos SQL) do cliente e coletar informações do programa e do servidor. um ataque para obter as informações desejadas.
Pode-se observar que a principal razão pela qual os ataques de injeção SQL são bem-sucedidos é que os dados inseridos pelo usuário não são verificados e os comandos SQL podem ser gerados dinamicamente a partir do cliente.
Solicitações http gerais nada mais são do que get e post, portanto, desde que filtremos caracteres ilegais nas informações de parâmetro de todas as solicitações post ou get no programa, podemos evitar ataques de injeção de SQL.
Infelizmente, o DW não fornece código relevante, portanto, se quiser evitar ataques de injeção de SQL, será necessário modificá-lo manualmente.
Basta salvar o programa a seguir como SQLinjection.asp e chamá-lo no cabeçalho da página que precisa evitar a injeção
<!--#Incluir arquivo=SQLinjection.asp-->
Isso evitará a injeção na página.
Se você quiser evitar que todo o site seja anotado, adicione uma chamada de cabeçalho ao arquivo de conexão do banco de dados no diretório Connections gerado pelo DW ou adicione diretamente o seguinte código de programa. pode adicionar artigos no formato de segundo plano. Ao aguardar o conteúdo, se uma instrução SQL for encontrada, o sistema a confundirá com um ataque SQL e solicitará um erro.
O código geral do programa (citado na Internet com as alterações apropriadas) é o seguinte:
<%
'-------Parte de definição------------------
dim sql_injdata
SQL_injdata = '|e|exec|inserir|selecionar|excluir
|atualizar|contar|*|%|chr|mid|master|truncar|char
|declarar|1=1|1=2|;
SQL_inj = divisão(SQL_Injdata,|
'-------Parte do POST------------------
Se Request.QueryString<> Então
Para cada SQL_Get em Request.QueryString
Para SQL_Data = 0 para Ubound (SQL_inj)
if instr(Request.QueryString(SQL_Get),
Sql_Inj(Sql_DATA))>0 Então
Response.Write <Linguagem de script=JavaScript>
alert('O sistema avisa!/n/nPor favor, não inclua caracteres ilegais nos parâmetros e tente injetar!/n/n');window.location=&'&index.htm&'&;</Script>
Resposta.fim
terminar se
próximo
Próximo
Terminar se
'-------OBTER parte------------------
Se Request.Form<> Então
Para cada Sql_Post em Request.Form
Para SQL_Data = 0 para Ubound (SQL_inj)
se instr(Request.Form(Sql_Post),Sql_Inj(Sql_DATA))>0 Então
Response.Write <Linguagem de script=JavaScript>
alert('O sistema avisa!/n/nPor favor, não inclua caracteres ilegais nos parâmetros e tente injetar!/n/n');window.location=&'&index.htm&'&;</Script>
Resposta.fim
terminar se
próximo
próximo
terminar se
%>
Através do programa acima, você pode resistir a caracteres perigosos de injeção de SQL enviados pelo método Get ou Post, avisar o intruso e, em seguida, redirecionar para index.htm (página inicial).