Ideias básicas:
Escreva um programa independente para cada função, página do programa
Informe os clientes o mínimo de informação possível no lado do servidor
Não use a ideia de "os clientes devem escrever isso" para pensar sobre o problema
Pense no maior número possível de coisas que não pode acontecer
1. Possíveis problemas com páginas da web dinâmicas interativas
1.1 Interação do tipo de formulário
1.1.1 Introdução aos conceitos
Quando interagimos com os visitantes, a forma mais usada (método de posta/get/put). Embora seja muito conveniente, muitos problemas surgem por causa disso.
A bandeira de entrada no formulário
Usado para aceitar informações inseridas por usuários, como: nome de usuário, senha, e -mail etc. Se você não verificar bem a entrada do usuário, um usuário malicioso
Vai bloquear algumas máquinas de segurança
Para ignorar a certificação de segurança. Por exemplo, inserir uma instrução HTML padrão ou declaração JavaScript alterará o resultado da saída e inserir uma instrução HTML padrão na caixa de entrada irá
Que tipo de resultado será obtido? Por exemplo, em um livro de mensagens, inserimos o conteúdo de nossa mensagem: <FontSize = 10> Olá! </font> Se não houver tela em seu programa
Bloqueie as declarações HTML, então a fonte "Hello" será alterada
tamanho. Alterar o tamanho da fonte e os adesivos no livro de mensagens às vezes não é uma coisa ruim, mas pode tornar o livro de mensagens vívido. Mas se você escrever na caixa de entrada
Loop morto de JavaScript, como:
<aherf = "http: // someurl" onmouseover = "while (1) {window.close ('/')}"> Os primeiros mil Thinking </a> Então verifique a mensagem para outros.
Basta mover os convidados
Se você mover o mouse para "os primeiros mil emocionantes", o navegador do usuário morrerá devido ao loop morto.
1.1.2 Pontos -chave da prevenção
(1) filtrar caracteres especiais
([/&;/`'/// |"*? ~ <>^/(/)/[/]/{/}/$/n/r]) /// $ 1/g;), este é o mais básico e foi mencionado mais de uma vez em muitos lugares.
<scriptLanguage = "vBScript">
Subbubotton_onClick
erm1.uusername.value = "" então
msgbox "Seu nome não pode estar vazio!", 0+32, "Oh! Ainda não é possível"
form1.uusername.focus
Exitsub
endif
efform1.upassword.value = "" então
msgbox "Sua senha não pode estar vazia!", 0+32, "Oh! Ainda não é possível"
form1.upassword.focus
Exitsub
endif
erm1.uusername.value = "" então
msgbox "Seu nome não pode estar vazio!", 0+32, "Oh! Ainda não é possível"
form1.uusername.focus
Exitsub
endif
form1.submit
endsub
</script>
FunctionInsempty (objName)
{
varstr = document.InputForm [objName] .Value
Vartmpstr = str.Replace ([/&;/`'/// |"*? ~ <>^/(/)/[/]/{/}/$/n/r]) /// $ 1/g; "")
vartMpstr = tmpstr.replace ([/&;/`'/// |"*? ~ <>^/(/)/[/]/{/}/$/n/r]) /// $ 1/g; "" ")
retornar (tmpstr.length == 0)
}
FunctionCheck ()
{
tf = document.inputform
erros = ""
if (isEmpty ("nome de usuário")) erros+= "nome de usuário não pode estar vazio./n";
if (isEmpty ("senha") erros+= "A senha não pode estar vazia!/n"
if (erros! = "")
alerta (erros);
return (erros == "")